TextBox接受Tab键

时间:2012-09-23 16:52:58

标签: c# winforms .net-3.5 textbox

如果我将TextBox属性AcceptsTab设置为True TextBox_KeyDown事件中的这种情况无效。

if (e.KeyCode == Keys.Tab)
{
     if ((e.Control) && (e.Shift))
     {
         e.Handled = true;
         if (Tabs.SelectedIndex > 0)
             Tabs.SelectedIndex = Tabs.SelectedIndex - 1;
         else
             Tabs.SelectedIndex = Tabs.TabPages.Count - 1;
     }
     else if (e.Control)
     {
         e.Handled = true;
         if (chatFormTabs.SelectedIndex < chatFormTabs.TabPages.Count - 1)
             chatFormTabs.SelectedIndex = chatFormTabs.SelectedIndex + 1;
         else
             chatFormTabs.SelectedIndex = 0;
     }
}

我想在Form KeyDown事件中使用这个条件,但它对我不起作用。

任何人都可以建议我怎么做:

  • TextBox将接受Tab键并将“\ t”char添加到当前位置。
  • 我可以通过Ctrl + Tab或Ctrl + Shift + Tab更改标签。

3 个答案:

答案 0 :(得分:4)

试试PreviewKeyDown event。我有一个类似的问题(接受箭头键)并且效果很好。

答案 1 :(得分:3)

除非您处于多行模式,否则Textbox将不接受该标签。通过将multiline属性设置为true切换到多行模式。然后,在文本框控件的KeyPress事件中添加以下内容。

if (e.KeyChar == '\t' || e.KeyChar== (char)13)
            e.Handled = true;

上面的代码表示,在按Tab键或输入键时默认不做任何操作。

之后,将以下代码添加到文本框控件的KeyDown事件中:

  if (e.KeyCode == Keys.Tab)
  {
     textBox1.AppendText(@"\t");
  }

在上面代码的大括号内,处理按Tab键时要执行的操作。

答案 2 :(得分:2)

TextBox.TabStop Property TextBoxBase.AcceptsTab Property 您可以使用TabStop属性指定是否可以使用TAB键将焦点移动到控件。读/写布尔。