【问题标题】:How to calculate keys combination in c#如何在c#中计算组合键
【发布时间】:2013-09-01 19:39:37
【问题描述】:

我必须按照代码capture keys pressed:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_SYSKEYDOWN = 0x104;

        if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
        {
            int x;
            switch (keyData)
            {
                case (Keys)131149: //case Keys.Control | Keys.M:
                    x = 1;
                    break;
                case Keys.Alt | Keys.Z:
                    x = 2;
                    break;
                case Keys.Shift | Keys.A:
                    x = 3;
                    break;
                case (Keys)196685: //Keys.Control | Keys.Shift | Keys.M:
                    x = 1;
                    break;
            }
        }

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

可以看到组合键Ctrl+Shift+M == 196685.

有没有办法让我计算代码中的其他组合?

例如:Alt+F == ?等等……

【问题讨论】:

  • 也许你的意思是case Keys.Alt | Keys.F:? (另一方面,您是否有特定原因会尝试找到组合计算的数值?)

标签: c# key


【解决方案1】:

Console.Write((int) (Keys.Alt | Keys.F))

或更基本的:

1000000000000000000 或 1000110 = 1000000000001000110

【讨论】:

  • 你知道我如何从 int 到 keys 反向获取它吗?例如,如果我有数字 196685,我怎么知道它意味着 Keys.Control |键.Shift | Keys.M ?
  • 196685 AND Keys.Control = true 或 false 控制已设置
  • 找到它:(char)196685 77 'M' (Keys)(196685-(char)196685) Shift |控制
猜你喜欢
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 2017-02-08
  • 1970-01-01
相关资源
最近更新 更多