PDA

View Full Version : سوال:چطور در اتفاق dataGridView1_CellEndEdit می توان مشخص کرد که چه دکمه ای فشرده شد؟



hassan_h
دوشنبه 07 بهمن 1387, 21:32 عصر
سوال:چطور در اتفاق dataGridView1_CellEndEdit می توان مشخص کرد که چه دکمه ای از صفحه کلید فشرده شد؟
آیا این امکان داره :متفکر:

hassan_h
دوشنبه 07 بهمن 1387, 22:59 عصر
از اساتید کسی بلد نیست:ناراحت:

newgoldenman
دوشنبه 07 بهمن 1387, 23:58 عصر
سلام
هر رويدادي، توي sender خودش، handle خودش رو پردازش ميكنه. پس، شما بايد از يكي از رويدادهاي KeyPress، KeyDown،KeyPreviewDown ... استفاده كنيد. كه بتونيد به صفحه كليد مسلط باشيد!

موفق باشيد.

hassan_h
سه شنبه 08 بهمن 1387, 12:30 عصر
سلام
هر رويدادي، توي sender خودش، handle خودش رو پردازش ميكنه. پس، شما بايد از يكي از رويدادهاي KeyPress، KeyDown،KeyPreviewDown ... استفاده كنيد. كه بتونيد به صفحه كليد مسلط باشيد!

موفق باشيد.
چشم بسته غیب گفتی . من مشکلم اینه که داخل dataGridView1_CellEndEdit میخوام به KEY که PRESS شده دسترسی داشته باشم
کسی نمیدونه؟:متفکر:

saied_genius
چهارشنبه 09 بهمن 1387, 17:18 عصر
چشم بسته غیب گفتی . من مشکلم اینه که داخل dataGridView1_CellEndEdit میخوام به KEY که PRESS شده دسترسی داشته باشم
کسی نمیدونه؟:متفکر:




براي اين كار در رويداد dataGridView1_CellEndEdit رويداد keydown يا keypress را به صورت زير فراخواني كنيد و در همان رويداد كليد فشار داده شده را مانيتور كنيد:



privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1_KeyPress(null, null);
}


و يا



privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1_KeyDown(null, null);
}



سوالي بود در خدمتم.

موفق باشيد.

***********************************************
ویرایش شده توسط مدیز بخش => مهدی کیانی
با تشکر از حسن نیت شما ..
ولی سعی کنید مواردی را که خلاف با قوانین وعرف برنامه نویس می بینید، از طریق دکمه مربوطه (http://barnamenevis.org/forum/images/buttons/report.gif)به مدیران گزارش دهید تا آنان نسبت به حل آن موضوع اقدام کنند.
**********************************************

hassan_h
چهارشنبه 09 بهمن 1387, 17:26 عصر
تشکر ولی شما کی فشرده شده رو نول قرار دادین پس زمانی که key down رو فراخوانی می کنید نمی تونید بدونید که چه کلیدی از صفحه کلید فشرده شده یعنی e.key=null میشه:متفکر:

saied_genius
چهارشنبه 09 بهمن 1387, 19:15 عصر
راه حل مايكروسافت:



public class dgv : DataGridView
{
protected override bool ProcessDialogKey(Keys keyData)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
return this.ProcessRightKey(keyData);
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
return this.ProcessRightKey(e.KeyData);
}
return base.ProcessDataGridViewKey(e);
}
}


فقط من نمي دانم چطوري ازش استفاده كنم!!!

saied_genius
چهارشنبه 09 بهمن 1387, 19:35 عصر
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Substring(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Length - 1, 1));
}


اميدوارم كه منظورتان را درست فهميده باشم و مشكلات با اين كد حل شود.

موفق باشيد.

hassan_h
چهارشنبه 09 بهمن 1387, 21:15 عصر
تشکر - اینی که شما نوشتین فقط برای این استفاده می شه کرد که به دیتاگرید بگیم که با زدن اینتر به جلو حرکت کنه - ولی مشکل من رو حل نمی کنه من می خواهم زمانی که یک سلول دیتا گرید تو مود ویرایش هستش دکمه فشرده شده رو درک کنه

hassan_h
چهارشنبه 09 بهمن 1387, 23:27 عصر
با یه روش دیگه مشکل رو حل کردم

key keyenter;
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message m, System.Windows.Forms.Keys k)


{


keyenter = k;



return base.ProcessCmdKey(ref m, k);
}

و میشه حالا در اونت های دیتا گرید به کلید فشرده شده دسترسی داشت
if (keyenter=keys.enter)
do