【问题标题】:Using KeyDown event for single action使用 KeyDown 事件进行单个操作
【发布时间】:2013-06-20 06:57:23
【问题描述】:

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

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

我的选项卡控件上有 2 个选项卡,我希望能够使用 CTRL+TAB 在它们之间切换。 切换应该在 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 事件?!

谢谢大家...

【问题讨论】:

    标签: c# tabcontrol keydown


    【解决方案1】:

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

    【讨论】:

    • 那是我的第一次尝试……在我第一次按下两个按钮时工作。 (只有一次 - 每次运行)然后它不再起作用了。这就是我添加 keyUp 和 bool 的原因。
    • 每次都对我有用,请在按键时检查焦点是否在您的应用程序中。
    • 好吧,当我在控件上正好有 3 个三个选项卡时,它似乎正在工作。只是它向后移动。但是当标签页数多于或少于 3 个时,它会随机跳动
    • 没有理由出现这种奇怪的行为,对于任何 (n) 个选项卡,它都应该按预期工作。我测试了 2,3,5 个标签,它工作正常。
    • 解决方案:不需要任何代码,因为 tabControl 已经通过 CTRL+TAB 和 CTRL+SHIFT+TAB 实现了选项卡之间的切换。程序忽略了您的代码,因为您没有激活 Form1.KeyPreview。我的代码与已经实现的函数发生冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多