PDA

View Full Version : سوال: تبدیل اتوماتیک دکمه Enter به Tab جهت انتقال فوکوس در کنترلها



babak1
سه شنبه 05 بهمن 1389, 14:49 عصر
سلام :
2 تا سوال داشتم :
1- فرق keys.return با keys.enter در چیست ؟
2- چرا فقط عمل tab 1 بار اجرا می شود ؟



private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
SendKeys.Send("{TAB}");
}



private void textBox3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
SendKeys.Send("{TAB}");
}

private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
SendKeys.Send("{TAB}");
}

rezatati
سه شنبه 05 بهمن 1389, 20:38 عصر
در مورد جواب سوال اولتون که من فکر می کنم هیچ فرقی ندارند در مورد سوال دوم هم که شما یک بار کد کلید تب را به برنامه میفرستین میخواهین چند بار اجرا بشه یا من منظور شما را درست متوجه نشدم اگه منظورتون چیز دیگه ای هستش واضح تر بگین

rezatati
سه شنبه 05 بهمن 1389, 20:46 عصر
و به جای کد بالا از کد زیر استفاده کن که یکبار تو کد فرمت بنویس و تمام


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg == 256 && keyData == System.Windows.Forms.Keys.Enter)
{
if (this.ActiveControl.ToString().Contains("System.Windows.Forms.Button"))
return base.ProcessCmdKey(ref msg, keyData);
else
{
System.Windows.Forms.SendKeys.Send("{TAB}");
return true;
}

}
return base.ProcessCmdKey(ref msg, keyData);
}

babak1
چهارشنبه 06 بهمن 1389, 08:38 صبح
من برای هر 3 textbox نوشتم ولی وقتی برنامه رو اجرا می کنم و enter رو می زنم فقط یکبار از textbox1 به textbox2 می ره و دیگه هر چه قدر enter میزنم از textbox2 به textbox3 نمی ره !!

AliRezaPro
چهارشنبه 06 بهمن 1389, 09:49 صبح
این کد رو در رویداد KeyPress هر رویدادی که میخوای فوکوس روش بره بزار

if ((int)e.KeyChar == (int)Keys.Enter)
{
this.SelectNextControl((Control)sender, true, true, true, true);
}
در رویداد کی پرس یکی از کنترلها قرار بده و روی بقیه کنترل ها فقط از لیست کشویی این رویداد رو اتخاب کن.