C#禁用TAB键

C#禁用TAB键,c#,character,tabs,C#,Character,Tabs,我有以下代码: this.searchInput.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.inputKeypress); private void Keypress(object sender, KeyPressEventArgs e) { // If Tab has been pressed if(122 == (int)e.KeyChar) { switchTab(

我有以下代码:

this.searchInput.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.inputKeypress); private void Keypress(object sender, KeyPressEventArgs e) { // If Tab has been pressed if(122 == (int)e.KeyChar) { switchTab(sTab); MessageBox.Show(sTab); } } this.searchInput.KeyPress+=新的System.Windows.Forms.KeyPressEventHandler(this.inputKeypress); 私有无效按键(对象发送器,按键事件参数e) { //如果已按Tab键 if(122==(int)e.KeyChar) { 开关板(sTab); MessageBox.Show(sTab); } } 它所做的是将焦点设置到另一个元素。 但是,当焦点设置为文本框时,我按TAB键,它只在文本框中创建一个选项卡,而不在下一个元素上设置焦点

有人知道我该怎么做吗


我试着设置e.Handled=true;但这不起作用…

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

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

是否尝试将
文本框的
AcceptsTab
设置为
false

编辑:


是的。它不起作用。奇怪。。。它仍然在文本框中列表

这没有什么意义。我运行了一个小的测试应用程序,当其
AcceptsTab
Multiline
属性都为
true
时,tab键只会使焦点远离
文本框
,而不管为
KeyPress
定义了什么事件处理程序


您确定其他代码没有将
AcceptsTab
设置为
true
?如果是,将
Multiline
设置为
false
是否会改变选项卡行为?您可以发布更多的相关代码吗?

您是否尝试过将
文本框上的
AcceptsTab
设置为
false

编辑:


是的。它不起作用。奇怪。。。它仍然在文本框中列表

这没有什么意义。我运行了一个小的测试应用程序,当其
AcceptsTab
Multiline
属性都为
true
时,tab键只会使焦点远离
文本框
,而不管为
KeyPress
定义了什么事件处理程序


您确定其他代码没有将
AcceptsTab
设置为
true
?如果是,将
Multiline
设置为
false
是否会改变选项卡行为?您可以发布更多相关代码吗?

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

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”来替代常规文本框


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

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

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”来替代常规文本框


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

yep。它不起作用。奇怪。。。它仍然在textboxah中制表,Multiline设置为false。我会把它设为真的,希望它能有所帮助:)是的。它不起作用。奇怪。。。它仍然在textboxah中制表,Multiline设置为false。我会把它设为真的,希望它能有所帮助:)是的。它不起作用。奇怪。。。它仍然在文本框中列表是的。它不起作用。奇怪。。。它仍然在文本框中制表。当按下tab键时,是否有任何理由显式移动焦点,而不是依赖默认机制和tab顺序?我需要将tabindex设置为面板,我看不到执行此操作的任何属性。是否有任何理由在按下tab时显式移动焦点,而不是依赖默认机制和tab顺序?我需要将tabindex设置为面板,我看不到执行此操作的任何属性。