对单个动作使用KeyDown事件
本文关键字:KeyDown 事件 单个动 | 更新日期: 2023-09-27 18:19:13
我试图使用KeyDown-Event(因为我喜欢使用KeyCode)使单个动作发生。为此,我使用bool变量来停止连续的操作。
不知道我的代码出了什么问题,但还没有找到一个可比的问题/解决方案…
在我的tabcontrol上有2个选项卡,我希望能够使用CTRL+TAB在它们之间切换。切换应该在tab键下发生一次。
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;
}
}
是否有一个自动KeyUp事件触发,即使我不释放键?!
您不需要处理Form1_KeyUp和tabSwitchPossible变量,删除它并复制以下代码:
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++;
}
}