对单个动作使用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事件触发,即使我不释放键?!

对单个动作使用KeyDown事件

您不需要处理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++;
        }
    }