Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对单个操作使用KeyDown事件_C#_Tabcontrol_Keydown - Fatal编程技术网

C# 对单个操作使用KeyDown事件

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) {

我试图使用KeyDown事件(因为我喜欢使用KeyCode)来实现单个操作。为此,我使用bool变量来停止连续操作

无法找出我的代码的错误,并且还没有找到类似的问题/解决方案

我的tabcontrol上有两个选项卡,我希望能够使用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;
        }
    }
即使我不释放钥匙,是否也会触发自动加钥匙事件


谢谢,各位,请提前…

您不需要处理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。我的代码与已经实现的函数冲突。