سوال:چطور در اتفاق dataGridView1_CellEndEdit می توان مشخص کرد که چه دکمه ای از صفحه کلید فشرده شد؟
آیا این امکان داره
سوال:چطور در اتفاق dataGridView1_CellEndEdit می توان مشخص کرد که چه دکمه ای از صفحه کلید فشرده شد؟
آیا این امکان داره
از اساتید کسی بلد نیست
سلام
هر رويدادي، توي sender خودش، handle خودش رو پردازش ميكنه. پس، شما بايد از يكي از رويدادهاي KeyPress، KeyDown،KeyPreviewDown ... استفاده كنيد. كه بتونيد به صفحه كليد مسلط باشيد!
موفق باشيد.
چشم بسته غیب گفتی . من مشکلم اینه که داخل 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);
}
سوالي بود در خدمتم.
موفق باشيد.
***********************************************
ویرایش شده توسط مدیز بخش => مهدی کیانی
با تشکر از حسن نیت شما ..
ولی سعی کنید مواردی را که خلاف با قوانین وعرف برنامه نویس می بینید، از طریق دکمه مربوطه ()به مدیران گزارش دهید تا آنان نسبت به حل آن موضوع اقدام کنند.
**********************************************
آخرین ویرایش به وسیله Mahdi.Kiani : چهارشنبه 09 بهمن 1387 در 19:52 عصر
تشکر ولی شما کی فشرده شده رو نول قرار دادین پس زمانی که key down رو فراخوانی می کنید نمی تونید بدونید که چه کلیدی از صفحه کلید فشرده شده یعنی e.key=null میشه
راه حل مايكروسافت:
publicclassdgv : DataGridView
{
protectedoverridebool ProcessDialogKey(Keys keyData)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
returnthis.ProcessRightKey(keyData);
}
returnbase.ProcessDialogKey(keyData);
}
protectedoverridebool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
returnthis.ProcessRightKey(e.KeyData);
}
returnbase.ProcessDataGridViewKey(e);
}
}
فقط من نمي دانم چطوري ازش استفاده كنم!!!
privatevoid 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));
}
اميدوارم كه منظورتان را درست فهميده باشم و مشكلات با اين كد حل شود.
موفق باشيد.
تشکر - اینی که شما نوشتین فقط برای این استفاده می شه کرد که به دیتاگرید بگیم که با زدن اینتر به جلو حرکت کنه - ولی مشکل من رو حل نمی کنه من می خواهم زمانی که یک سلول دیتا گرید تو مود ویرایش هستش دکمه فشرده شده رو درک کنه
[cod]
با یه روش دیگه مشکل رو حل کردم
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
[/cod]