C# 对单个操作使用KeyDown事件
我试图使用KeyDown事件(因为我喜欢使用KeyCode)来实现单个操作。为此,我使用bool变量来停止连续操作 无法找出我的代码的错误,并且还没有找到类似的问题/解决方案 我的tabcontrol上有两个选项卡,我希望能够使用CTRL+TAB在它们之间切换。 切换应在tab键按下时发生一次C# 对单个操作使用KeyDown事件,c#,tabcontrol,keydown,C#,Tabcontrol,Keydown,我试图使用KeyDown事件(因为我喜欢使用KeyCode)来实现单个操作。为此,我使用bool变量来停止连续操作 无法找出我的代码的错误,并且还没有找到类似的问题/解决方案 我的tabcontrol上有两个选项卡,我希望能够使用CTRL+TAB在它们之间切换。 切换应在tab键按下时发生一次 bool tabSwitchPossible = true; void Form1_KeyUp(object sender, KeyEventArgs e) {
bool tabSwitchPossible = true;
void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
tabSwitchPossible = true; //Reset boolean
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (tabSwitchPossible && e.KeyCode == Keys.Tab && e.Modifiers == Keys.Control)
{
tabSwitchPossible = false; //Set boolean to prevent further action
if (mainTabControl.SelectedIndex >= mainTabControl.TabCount - 1)
mainTabControl.SelectedIndex = 0;
else
mainTabControl.SelectedIndex++;
return;
}
}
即使我不释放钥匙,是否也会触发自动加钥匙事件
谢谢,各位,请提前…您不需要处理Form1\u KeyUp和TabSwitch可能的变量,请将其删除,然后复制以下代码:
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Modifiers == Keys.Control)
{
if (mainTabControl.SelectedIndex >= mainTabControl.TabCount - 1)
mainTabControl.SelectedIndex = 0;
else
mainTabControl.SelectedIndex++;
}
}
那是我第一次尝试。。。我第一次按下两个按钮时工作。(每次只跑一次)然后它就不起作用了。这就是为什么我添加了keyUp和bool。它每次都对我有效,请在按下键的同时检查应用程序中的焦点。当我在控件上有三个选项卡时,它似乎有效。只是它会向后移动。但是,当有多于或少于3个标签时,它会跳来跳去。没有理由出现这种奇怪的行为,它应该像任何(n)个标签所期望的那样工作。我测试了2,3,5个标签,效果很好。解决方案:根本不需要代码,因为tabControl已经通过CTRL+TAB和CTRL+SHIFT+TAB实现了标签之间的切换。程序将忽略您的代码,因为您没有激活Form1.KeyPreview。我的代码与已经实现的函数冲突。