0

如果我将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 将接受制表键并将“\t”字符添加到当前位置。
  • 我将能够通过 Ctrl+Tab 或 Ctrl+Shift+Tab 更改选项卡。
4

3 回答 3

4

试试PreviewKeyDown 事件。我有一个类似的问题(接受箭头键),效果很好。

于 2012-09-23T17:39:23.293 回答
3

Textbox won't accept the tab unless you are in multi-line mode. Switch to multiline mode by setting the multiline property to true. Then, add the following in your KeyPress event of your textbox control.

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

The above code means, don't do anything by default when tab or enter key is pressed.

After that, add the following code to your KeyDown event of your textbox control:

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

Inside the braces of the above code, handle whatever you want to do when the tab key is pressed.

于 2012-09-23T17:14:36.183 回答
2

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

于 2013-12-28T07:22:04.717 回答