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

标签 c# .net winforms uinavigationcontroller

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

我该怎么做?

这是一个好习惯还是应该避免?实际上,用户很容易适应并习惯于按 ENTER 键在文本框和按钮之间导航。所以,为了他们,我需要这样做。

请以两个文本框为例帮助我完成完整的代码。

最佳答案

我认为最好的方法是创建一个继承自 TextBox 的用户控件,然后覆盖 OnKeyPress 方法以捕获输入和发送选项卡。然后,焦点将转移到表单上的下一个 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}");
        }

    }
} 

您也可以在控件的 KeyPress 事件处理程序中放置类似的代码,但这会节省大量重复代码和不必要的事件处理程序。

至于这是否是好的做法 - 我一般会说,不,更改表单的默认行为从来都不是一个好主意,但是当然,如​​果这是您的用户想要和期望的,那么这是他们的决定.

关于c# - 使用回车键在 Windows 窗体中导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605561/

相关文章:

C# 可以将 "program"类部分用于控制台应用程序吗?

.net - TFS 连接错误 - 但服务器/数据库已启动

c# - 在 C# Winforms 中放大到面板的中间

c# - 具有多种字体的矩形内的 DrawString 属性 c#

c# - XML 文档 (30, 14) FormatException : Input string was not in a correct format. 中存在错误?

c# - Python脚本可以在Windows应用商店应用程序中执行吗?

c# - 如何在 UWP/C# 中使用 svg 文件资源设置 AppBarButton 图标

c# - XML反序列化失败

c# - 如何从字符串实例化类型及其值?

c# - ListBox multiple Selection 获取所有选中的值