C#禁用TAB键
我有以下代码: 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键,它只在文本框中创建一个选项卡,而不在下一个元素上设置焦点 有人知道我该怎么做吗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(
我试着设置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设置为面板,我看不到执行此操作的任何属性。