c# - 覆盖 ProcessCmdKey 时如何检测 shift+tab

标签 c# .net winforms overriding keypress

所以我不得不覆盖 ProcessCmdKey 以检测我的 winform 中的制表符按下。参见 this上下文问题。现在我已经成功解决了我遇到的制表问题,我现在意识到我还需要检查 shift+tab 逻辑以允许用户向后移动。我似乎无法弄清楚。以下是我尝试过的一些方法,但到目前为止还没有奏效。

    private bool isTab = false;
    private bool isShiftTab = false;
    private  StringBuilder ShiftTab = new StringBuilder();

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {

        if (keyData == Keys.Tab)
        {
            isTab = true;
            ShiftTab.Append("Tab");
        }
        else
        {
            isTab = false;
        }

        if (keyData == Keys.Shift)
        {
            ShiftTab.Append("Shift");
        }

        if (ShiftTab.ToString() == "TabShift" || ShiftTab.ToString() == "ShiftTab")
        {
            isShiftTab = true;

        }

        if ((Control.ModifierKeys & Keys.Tab) != 0)
        {
           //code
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

最佳答案

我认为你必须像这样组合这两个键:

if (keyData == (Keys.Shift | Keys.Tab)) isShiftTab = true;

然后您可以使用它来跳过选项卡覆盖。

关于c# - 覆盖 ProcessCmdKey 时如何检测 shift+tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873825/

相关文章:

c# - 如何在winforms中使分组框文本居中?

c# - .NET 中的 KeyValuePair 和 Hashtable 有什么区别?

c# - System.Net.Http.Formatting.dll 导致 Newtonsoft.Json 出现问题

c# - 使用成员作为实现者实现接口(interface)

c# - TextBox 和 RichTextBox 在线程方面的区别

c# - 将子类分配给接口(interface),涉及泛型和协变

c# - C# (.NET) 中的图形

c# - System.Net.Http.HttpClientExtensions 的使用不明确

html - 删除 <title> 标签内的引​​号

c# - 如何获得 Windows 10 中的默认强调色?