PDA

View Full Version : سوال: ايجاد TabIndex سفارشي در DataGridView



Nima_kyan
سه شنبه 25 مهر 1391, 01:02 صبح
با سلام
من میخوام تو یه DataGridView تب ايندكس سفارشي داشته باشم. يعني مثلا رو بعضي ستونها اصلا نره و نحوه حركتش(چپ به راست يا راست به چپ بودنش) رو خودم تعيين كنم
مثلا تو این عکس تب:
1-اصلا رو ستون A و B نره.
2-حرکتش از راست به چپ باشه.(یعنی اول Y بعد X دوباره سطر بعد اول Y بعد X)

94035

Nima_kyan
سه شنبه 25 مهر 1391, 13:41 عصر
دوستان کسی راه حلی،پیشنهادی.. نداشت؟؟
من این تاپیک ها رو هم خوندم ولی مشکلم حل نشد
http://barnamenevis.org/showthread.php?257280-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D9%84%DB%8C%D8%AF%D9%87%D8%A7%DB%8C-%D8%B2%D8%AF%D9%87-%D8%B4%D8%AF%D9%87-%D8%B1%D9%88%DB%8C-%DA%AF%D8%B1%DB%8C%D8%AF-%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84%D8%AA-edit&p=1143302&viewfull=1#post1143302
http://barnamenevis.org/showthread.php?350727-%D9%85%D8%B4%DA%A9%D9%84-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-dataGridView&p=1546825&viewfull=1#post1546825
http://barnamenevis.org/showthread.php?320303-%D8%AD%D8%B1%DA%A9%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%B7%D8%B1%D9%87%D8%A7%DB%8C-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88&p=1405170&viewfull=1#post1405170

morteza271
سه شنبه 25 مهر 1391, 13:51 عصر
سلام.
من یه نمونه کد برای اینکار دارم ولی الان همرام نیست!
اگه دیرتون نمیشه سعی میکنم تا ساعت 20 واستون بذارم همینجا!!

Nima_kyan
سه شنبه 25 مهر 1391, 13:54 عصر
ممنون میشم بزاریش. نه عجله ای نیست.

morteza271
سه شنبه 25 مهر 1391, 17:33 عصر
سلام.
این نمونه کدی هست که گفتم(البته تغییرش دادم چون من یه جور دیگه عمل کردم و به گونه ای که شما می خواستین تغییرش دادم)

private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
if (dgvList.CurrentCell.ColumnIndex == dgvList.Columns["Y"].Index)
{
SendKeys.Send("{left}");
dgvList.CurrentCell = dgvList.Rows[dgvList.CurrentRow.Index].Cells["X"];
return;
}
if (dgvList.CurrentCell.ColumnIndex == dgvList.Columns["X"].Index)
{
SendKeys.Send("{down}");
return;
}
}
}

private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
if (dgvList.CurrentCell.ColumnIndex == dgvList.Columns["A"].Index || dgvList.CurrentCell.ColumnIndex == dgvList.Columns["B"].Index)
{
dgvList.CurrentCell = dgvList.Rows[dgvList.CurrentRow.Index].Cells["Y"];
}
}
catch { }
}
موفق باشید

Nima_kyan
سه شنبه 25 مهر 1391, 23:03 عصر
سلام.
این نمونه کدی هست که گفتم(البته تغییرش دادم چون من یه جور دیگه عمل کردم و به گونه ای که شما می خواستین تغییرش دادم)

private void dgvList_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
if (dgvList.CurrentCell.ColumnIndex == dgvList.Columns["Y"].Index)
{
SendKeys.Send("{left}");
dgvList.CurrentCell = dgvList.Rows[dgvList.CurrentRow.Index].Cells["X"];
return;
}
if (dgvList.CurrentCell.ColumnIndex == dgvList.Columns["X"].Index)
{
SendKeys.Send("{down}");
return;
}
}
}

private void dgvList_CellEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
if (dgvList.CurrentCell.ColumnIndex == dgvList.Columns["A"].Index || dgvList.CurrentCell.ColumnIndex == dgvList.Columns["B"].Index)
{
dgvList.CurrentCell = dgvList.Rows[dgvList.CurrentRow.Index].Cells["Y"];
}
}
catch { }
}
موفق باشید
ممنون بابت وقتی که گذاشتی
این تقریبا همون روشیه که خودمم استفاده کردم ولی درست کار نمیکنه. یعنی تا زمانی که تو سلول ها هیچ اطلاعاتی وارد نمیکنیم مشکلی نداره ولی اگه تو هر کدوم از سلول ها چیزی وارد کنیم کلا از کار میوفته و تب هاش قاطی میشه.

morteza271
چهارشنبه 26 مهر 1391, 10:46 صبح
راستش من به اونش دقت نکردم!!شرمنده
ولی بعید میدونم زیاد کار خاصی داشته باشه و با یه خورده ور رفتن باهاش درست میشه!
الان نمیتونم وگرنه براتون درستش میکردم!باهاش ور برین اگه نتونستین درستش کنید بگین تابعدا سر فرصت یه نمونه دیگه درست کنم و بذارم براتون...
موفق باشید

Mahmoud.Afrad
پنج شنبه 27 مهر 1391, 17:19 عصر
سلام

اگر میخواهید حرکت راست به چپ باشه راحت ترین چیزی که به نظرم میرسه اینه که گریدویو را راست به چپ کنید در این حالت کافیه از ورود به ستونهای مورد نظر جلوگیری کنید:
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns["A"].Index||e.ColumnIndex == dataGridView1.Columns["B"].Index)
{
SendKeys.Send("{tab}");
}
}

Nima_kyan
پنج شنبه 27 مهر 1391, 18:23 عصر
سلام

اگر میخواهید حرکت راست به چپ باشه راحت ترین چیزی که به نظرم میرسه اینه که گریدویو را راست به چپ کنید در این حالت کافیه از ورود به ستونهای مورد نظر جلوگیری کنید:
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns["A"].Index||e.ColumnIndex == dataGridView1.Columns["B"].Index)
{
SendKeys.Send("{tab}");
}
}
سلام
ممنون بابت راهنماييتون
گريدويو من راست به چپه ولي من ميخوام حركت Tab چپ به راست باشه.

Mahmoud.Afrad
پنج شنبه 27 مهر 1391, 18:46 عصر
سلام
ممنون بابت راهنماييتون
گريدويو من راست به چپه ولي من ميخوام حركت Tab چپ به راست باشه.

توی شکل که گریدویو چپ به راسته!!

خوب راست به چپ یا چپ به راست بودن بستگی به جهت حرکتی داره که شما میخواهید. اگر حرکت راست به چپ میخواهید راست به چپ را true کنید و اون کدی که گفتم را اضافه کنید و ترتیب ستونها رو هم به طور دلخواه قرار بدید.

Nima_kyan
پنج شنبه 27 مهر 1391, 23:15 عصر
توی شکل که گریدویو چپ به راسته!!

بله حق با شماست ولی این شکل رو به عنوان مثال گذاشتم.

خوب راست به چپ یا چپ به راست بودن بستگی به جهت حرکتی داره که شما میخواهید. اگر حرکت راست به چپ میخواهید راست به چپ را true کنید و اون کدی که گفتم را اضافه کنید و ترتیب ستونها رو هم به طور دلخواه قرار بدید.
درسته با چپ به راست کردن گرید و تغییر ترتیب ستونها میشه این کار رو کرد. ولی من چون تو فرم هام خیلی با این قضیه سروکار دارم یه راه حل منطقی تر واسه سفارشی کردن TabIndex هام میخواستم یعنی TabIndex ستونها رو (مثله TabIndex چندتا TextBox معمولی) به هر ترتیبی که بخوای قرارشون بدی.