.net - 有没有办法在 C#.NET 中使用 TabIndex 实现通用 KeyDown 处理程序和焦点移动?

标签 .net events focus keydown tabindex

我想为表单上的所有可用控件运行一个通用的 KeyDown 偶数处理程序。 有什么办法可以实现这一点吗?

更清楚地说,我的目的是每当按下 Enter 键时检测它,并将焦点从当前控件移动到具有下一个 TabIndex 的控件。

我怎样才能做到这一点?

最佳答案

您必须避免妨碍正常使用 Enter 键。这应该很接近:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == Keys.Enter && this.AcceptButton == null && this.ActiveControl != null) {
    TextBoxBase box = this.ActiveControl as TextBoxBase;
    if (box == null || !box.Multiline) {
      // Not a dialog, not a multi-line textbox; we can use Enter for tabbing
      this.SelectNextControl(this.ActiveControl, true, true, true, true);
      return true;
    }
  }
  return base.ProcessCmdKey(ref msg, keyData);
}

关于.net - 有没有办法在 C#.NET 中使用 TabIndex 实现通用 KeyDown 处理程序和焦点移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2128562/

相关文章:

c# - .NET Core 中的环境变量配置

qt - qt中的按键事件

javascript - 模式中的 Vanilla javascript Trap Focus(可访问性选项卡)

java - 我如何摆脱按钮周围的蓝色边框?对于 Java 图形用户界面

c# - Windows 应用程序已停止在客户端计算机中工作

c# - HttpClient 超时似乎不起作用

c# - 注意插入删除和更新数据到 c# 中的 gridview

javascript - 在输入字段中输入文本后,按钮 onclick 不会触发

c# - 带有本地 SQL Server CE DLL 的 Entity Framework 代码优先 "ADO.NET provider not found"

c++ - QwtPlot鼠标点击事件