我试图尽可能少地使用鼠标,为此我需要知道是否有任何方法可以在按下键时更改控制Enter
。
我的想法是,如果我在一个带有多个控件的表单上,我主要使用类型的控件,TextBox
但我可以有DateTimePickers
or ComboBox
; 当按下Enter
跳转到下一个控件时,使用在具有属性的表单中创建它们时给它们的顺序TabIndex
。
private void txtOrdenServicio_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
Cargar_OrdenesServicio();
txtRazonTrabajo.Focus();
}
}
使用前面的代码,我将它放在其中一个事件中,KeyPress
但如果我有 10 个,我TextBox
将不得不手动放置随后的控件。我正在使用 Windows 窗体。
有没有办法实现这种跳跃?
要传递给其他控件,您只需要处理
OnKeydown
要使用的控件的事件。例子:
或示例 2:
如果您的方法
Cargar_OrdenesServicio();
在更改文本中的值时对控件执行某种类型的操作,我建议您将所述调用放在 event 中OnTextChanged
。在 VB.NET 中,您想要的会更容易实现,因为您可以从同一方法处理不同的未签名事件,但 C# 不支持实现事件,除非它具有所需的签名,对于 type 的事件
Key
,所需的签名包含以下内容:也就是说,您可以在所有支持
OnKeyDown
来自事件浏览器的事件的控件上实现相同的方法:签名和重载,如果你想了解比我提到的多一点的话。
我希望它对你有所帮助。
关键是使用GetNextControl () 与此您将能够知道哪个是下一个应该获得焦点的控件。
使用 Enter 键作为选项卡
正如您将看到的按键,您在表单级别定义它以使其成为全局
您还可以考虑使用Form.ProcessCmdKey来更普遍地控制表单键。
为了让它正常工作,使用PreviewKeyDown事件很重要
'''
'''