在C#windows应用程序中导航表单的所有控件(使用Enter键)我使用以下代码:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == System.Windows.Forms.Keys.Enter)
{
SendKeys.Send("{TAB}");
}
}
N.B。:表格属性KeyPreview = True;
以上代码运行正常,但当我要在两个dateTimePicker
(dateTimePicker1
,dateTimePicker2
)之间导航时,按Enter键。
当Form打开Focus dateTimePicker1
并按Enter键然后按下dateTimePicker2
并按Enter键焦点dateTimePicker1
。
如果没有上述代码,以下代码可以正常工作。使用上述代码或任何其他方式导航两个dateTimePicker
的最佳方法是什么?
private void dateTimePicker1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) {
dateTimePicker2.Focus();
}
}
private void dateTimePicker2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) {
dateTimePicker1.Focus();
}
}
任何人请帮助我。
答案 0 :(得分:1)
您可以将两个DateTimePickers
订阅到同一个事件处理程序,而不是使用两个事件,并使用sender
对象:
private void dateTimePicker_KeyDown(object sender, KeyEventArgs e)
{
var dtp = sender as DateTimePicker;
if (e.KeyCode == Keys.Enter)
{
if (dtp?.Name[dtp.Name.Length - 1] == '1')
dateTimePicker2.Focus();
else dateTimePicker1.Focus();
}
}
不要忘记在KeyDown
的属性窗口中更改DateTimePickrs
事件的值,以指向此事件。