c# - 尝试将焦点更改按钮从选项卡更改为在 C# Windows 窗体中输入

标签 c# winforms

正如标题所说,我正在尝试将选项卡按钮更改为输入按钮。我已经写了这个并且它有点工作

public class EnterBasedForm : System.Windows.Forms.Form
{
    public EnterBasedForm()
    {
        KeyPreview = true;
        KeyUp += new KeyEventHandler(OnKeyPressed);
    }

    public void OnKeyPressed(object? sender, KeyEventArgs handler)
    {
        if (handler.KeyCode == Keys.Enter)
        {
            SendKeys.Send("{TAB}");
        }
    }
}

但是当按下按钮时,这会按下按钮而不是改变焦点。每次按 Enter 键都会播放声音。如何禁用回车键功能?

最佳答案

您可以在 ProcessCmdKey() 中捕获 Enter 键,使用 base.ProcessTabKey() 强制使用 Tab 键,然后使用 Enter 键,这样它就不会返回 true 更进一步:

public partial class EnterBasedForm : Form
{

    public EnterBasedForm()
    {
        InitializeComponent();
    }

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
            base.ProcessTabKey(true);
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

}

关于c# - 尝试将焦点更改按钮从选项卡更改为在 C# Windows 窗体中输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76331184/

相关文章:

c# - 如何将表单置于请求帮助模式?

java - 数组中没有重复项

c# - 你如何在winforms中使用通用对象绑定(bind)?

C# - 将上传的 Excel 文件保存到 MemoryStream,然后用它来填充 DataTable

c# - T4 模板使用来自服务器资源管理器的连接

c# - UI 自动化不适用于 DataGridView

java - 少数 ASCII 字符在 Windows 应用程序中不起作用

c# - 从 C# Windows 应用程序创建 .exe

c# - App.config 中的更改在重新启动应用程序后不会反射(reflect)出来

c# - 从 ObservableCollection<List> 中删除由 DateTime 确定的列表项