我找到了一个似乎有效的解决方案.
private void DeviceForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13 && tstxtDeviceFilter.Focused)
{
filterByDeviceSN();
}
}
Run Code Online (Sandbox Code Playgroud)
我不禁想到必须有更好的方法!
- 编辑 - 编辑 - 编辑 - 编辑 - EDIT--
好吧,看了下面的建议(谢谢),我在这种情况下找到了一种"更好"的方式.
this.tstxtDeviceFilter.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tstxtDeviceFilter_KeyDown);
private void tstxtDeviceFilter_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
filterByDeviceSN();
}
}
Run Code Online (Sandbox Code Playgroud)
显然,通过将事件捕获到文本框本身而不是表单上,我不需要担心焦点.再一次,我觉得因为没想过这么久而感到愚蠢!
每个表单都有一个"Accept"按钮和"Cancel"按钮的属性,这些是当用户分别按下enter和escape时"点击"的按钮.
您可以在每个控件获得焦点时更改默认按钮(每个按钮可以有一个焦点事件处理器,并与一组文本框共享)
如果你这样做,那么按钮的外观会改变,从而为用户提供一个视觉提示,告诉他们哪个按钮是默认按钮.
或者,如果您不想这样做,可以使用"ActiveControl"属性,并测试以查看它属于哪组文本框.
您是否问过自己,如果默认按钮不是其中一个文本框,应该怎么做?
| 归档时间: |
|
| 查看次数: |
44988 次 |
| 最近记录: |