我的表单中有TabControl
,其中包含5个标签。当我按 TAB 键时,我希望焦点转到下一个选项卡。我已设置每个TabIndex
控件的TabPage
属性。但它没有用。
我还尝试使用RichTextBox
中的TabPages
代码。
private void rchFisrtTab_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
tabText.SelectedTab = tbpSecondTab;
rchSecondTab.Focus();
rchSecondTab.Select();
}
}
但它根本没有被触发!所以我想知道如何让它发挥作用。
谢谢。
答案 0 :(得分:0)
您需要通过继承TAB
并覆盖其中一个TabControl
方法来拦截ProcessXXX
密钥,例如
class FormTab2 : Form {
public FormTab2() {
TabControl tc = new TC2 { Dock = DockStyle.Fill };
TabPage p1 = new TabPage() { Text = "Tab1" };
TabPage p2 = new TabPage() { Text = "Tab2" };
p1.Controls.Add(new Button { Text = "Button1" });
p2.Controls.Add(new Button { Text = "Button2" });
tc.TabPages.Add(p1);
tc.TabPages.Add(p2);
Controls.Add(tc);
}
public class TC2 : TabControl {
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Tab && this.Focused) {
int x = (SelectedIndex + 1) % TabPages.Count;
SelectedTab = TabPages[x];
//this.Focus();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
}