0

我正在尝试使用 KeyDown-Event(因为我喜欢使用 KeyCode)来执行单个操作。为此,我使用 bool 变量来停止连续动作。

虽然无法弄清楚我的代码有什么问题,并且还没有找到类似的问题/解决方案......

我的选项卡控件上有 2 个选项卡,我希望能够使用 CTRL+TAB 在它们之间切换。切换应该在选项卡的 keydown 上发生一次。

    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 事件?!

谢谢各位,先...

4

1 回答 1

0

您不需要处理 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++;
        }
    }
于 2013-06-20T07:50:12.077 回答