【问题标题】:C# Disable the TAB keyC# 禁用 TAB 键
【发布时间】:2010-11-30 22:17:46
【问题描述】:

我有这个代码:

this.searchInput.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.inputKeypress); 私人无效按键(对象发送者,KeyPressEventArgs e) { // 如果 Tab 已经被按下 if(122 == (int)e.KeyChar) { switchTab(sTab); MessageBox.Show(sTab); } }

它的作用是将焦点设置到另一个元素。 但是,当焦点设置到 TextBox 时,我按 TAB 键,它只会在 TextBox 中创建一个选项卡,而不会将焦点设置在下一个元素上。

有人知道我怎样才能完成这项工作吗?

我尝试设置 e.Handled = true;但这没有用...

【问题讨论】:

  • 您是否有任何理由在按下选项卡时显式移动焦点而不是依赖默认机制和选项卡顺序?
  • 我需要将 tabindex 设置为面板,但我看不到任何属性。

标签: c# character tabs


【解决方案1】:

您需要像这样创建控件的实例,并覆盖以下方法:

using System.Windows.Forms

//optional namespace

public class NoTabTextBox : TextBox
{
    protected override bool IsInputKey(Keys keyData)
    {
        switch (keyData)
        {
            case Keys.Tab:
                return true;
        }
        return base.IsInputKey(keyData);
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Tab) { e.Handled = true; e.SuppressKeyPress = true; }
        base.OnKeyDown(e);
    }
}

构建解决方案,然后通过在工具箱中的用户控件下找到它,用新的“NoTabTextBox”替换您的常规 TextBox。

这将捕获 Tab 键并强制它不执行任何操作。

【讨论】:

    【解决方案2】:

    您是否尝试将TextBox 上的AcceptsTab 设置为false

    编辑:

    是的。这是行不通的。奇怪...它仍然在文本框中列出

    这没什么意义。我运行了一个小型测试应用程序,当它的AcceptsTabMultiline 属性都是true 时,tab 键只会将焦点从TextBox 上移开,而不管定义的事件处理程序如何为KeyPress

    您确定其他代码没有将AcceptsTab 设置为true?如果是,将Multiline 设置为false 是否会改变标签行为?您能否发布更多相关代码?

    【讨论】:

    • 是的。这是行不通的。奇怪......它仍然在文本框中列出
    • 啊,多行设置为假。我会将其设置为 true,并希望看到它有所帮助:)
    【解决方案3】:

    将文本框的AcceptsTab属性设置为false?

    【讨论】:

    • 是的。这是行不通的。奇怪......它仍然在文本框中列出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多