使用回车键在Windows窗体中导航

sql*_*ild 1 .net c# uinavigationcontroller winforms

我的Windows窗体应用程序中有文本框,我希望当用户按下ENTER键时,光标将转到下一个文本框.

我该怎么做呢?

这是一个好习惯还是我应该避免它?实际上,用户非常容易使用并且习惯性地按下ENTER键以在文本框和按钮之间导航.所以,对他们来说,我需要这样做.

请使用两个文本框作为示例帮助我完整的代码.

Dav*_*all 6

我想说最好的方法是创建一个继承自TextBox的用户控件,然后重写OnKeyPress方法来捕获enter并发送一个tab.然后,焦点将被赋予表单上的下一个TabIndex,就像实际输入了一个选项卡一样.

下面的代码完全是这样的:

public partial class CustomTextbox : TextBox
{
    public CustomTextbox()
    {
        InitializeComponent();            
    }

    protected override void OnKeyPress(KeyPressEventArgs e)
    {
        if (e.KeyChar == '\r')
        {
            e.Handled = true;
            SendKeys.Send("{TAB}");
        }

    }
} 
Run Code Online (Sandbox Code Playgroud)

您还可以在控件的KeyPress事件处理程序中添加类似的代码,但这样可以节省大量重复的代码和不必要的事件处理程序.

至于这是否是一个好习惯 - 我会说,一般来说,不,改变表格的默认行为绝不是一个好主意,但当然,如果这是你的用户想要和期望的,那么这是他们的决定.


Dav*_*nan 5

这是一个坏主意.标准UI用于TAB在输入字段之间移动.当您选择不遵循众所周知的标准时,您的应用程序可用性较差.这些标准使UI变得直观.