我已将表单的KeyPreview
属性设置为true
。
我已添加此代码:
private void PlatypusScheduleForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F9)
{
tabControlPlatypi.SelectedTab = tabPageDuckBill;
}
else if (e.KeyCode == Keys.F10)
{
tabControlPlatypi.SelectedTab = tabPagePlatypus;
}
}
当我混搭 F10 时,它按预期工作;然而,mashing F9 什么也没做。
tabPageDuckBill
是显示的设计时/默认tabPage
。为什么 F10 会将我带到“其他”标签页,但 F9 则不会回到原来的那个?
答案 0 :(得分:1)
我在过去遇到过同样的问题,即使从SelectedIndexChanged()事件中删除可疑代码后问题仍然存在。然后我使用了一种效果更好的不同技术。我没有使用表单KeyDown事件,而是覆盖了ProcessCmdKey事件,如下所示:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.F9)
{
this.tabControl1.SelectedTab = tabPage1;
return true;
}
else if (keyData == Keys.F10)
{
this.tabControl1.SelectedTab = tabPage2;
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
答案 1 :(得分:1)
我发现如果我这样做了:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F9)
{
tabControl1.SelectedTab = tabPage1;
e.SuppressKeyPress = true;
}
else if (e.KeyCode == Keys.F10)
{
tabControl1.SelectedTab = tabPage2;
e.SuppressKeyPress = true;
}
}
它会来回切换就好了。但是,如果没有e.SuppressKeyPress = true;
,它就表现出你提到的行为。