PDA

View Full Version : مبتدی: تداخل در عملکرد دکمه اینتر



kamiloted
دوشنبه 22 شهریور 1395, 23:31 عصر
سلام دوستان.

من از این کد برای اینتر به جای تب استفاده کردم که این را در رویداد زیر قرار دادم


private void txt1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SendKeys.Send("{TAB}");
}
}


و از کد زیر برای انتقال اطلاعات از فرم 1به فرم 2 با اینتر استفاده کردم.



protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Escape) this.Close();
if (keyData == Keys.Enter)
{
this.dataGridView1_DoubleClick(null, null);
return true;
}
return base.ProcessCmdKey(ref msg, keyData);

}


حالا من که میخوام چیزی ثبت کنم و اینتر را میزنم.عمل تب انجام نمیشه بلکه کد دوم انجام میشه.
توی بعضی از رویدادها قرار دادم باز اتفاق نمی افته .
مشکل از چیه؟؟؟
ممنون دوستان.

مهرداد صفا
سه شنبه 23 شهریور 1395, 10:53 صبح
سلام.
متود ProcessCmdKey قبل از Fire شدن رویداد KeyDown پردازش میشه. شما باید هر دو رویداد رو با یک روش هندل کنید.
به عنوان مثال می تونید رویداد مربوط به فرم رو هم در KeyDown هندل کنید و یا در همین متود ProcessCmdKey فعال نبودن فیلد مورد نظر رو شرط کنید.
به این صورت:


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if(!MyTextbox.Focused)
{
//عملیات مربوط به فرم

}
else
{
//اگر خواستید می تونید همینجا عملیات مربوط به فیلد رو انجام بدید
}
return base.ProcessCmdKey....
}

موفق باشید.