【问题标题】:How To Make My Form Respond to Ctrl-Alt, in C#?如何让我的表单在 C# 中响应 Ctrl-Alt?
【发布时间】:2014-04-20 05:51:08
【问题描述】:

我有一个简单的 C# 表单,它有一个网格和几个按钮。

我希望表单在按下 Ctrl-Alt 时稍微改变它的 GUI, 并在释放 Ctrl-Alt 时将 GUI 恢复为原始状态。

我知道如何检查是否按下了 Ctrl+Alt - 一种方法是通过 Control.ModifierKeys。

我要问的是:

对于按钮按下,我有响应它的事件处理程序。 对于键盘常规键,我有响应它的事件处理程序。 但是 Ctrl-Alt 不是常规键 - 它们在按下时不会引发事件。

那我该怎么办?

我想到的一种方法是启用一个将运行的计时器,如果按下 Ctrl-Alt,则每 200 毫秒检查一次。

还有比定时器更好的方法吗?

谢谢

【问题讨论】:

  • 签入 KeyDown。但这是一个可怕的想法。用户如何在不触发您的操作的情况下按 ctrl+alt+del?这些是修饰键。除了在全屏游戏中,它们应该只与非修饰键结合使用。

标签: c# .net winforms user-interface


【解决方案1】:

您可能可以覆盖表单的方法来获取击键。

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)    
 {
    if (keyData == (Keys.Control | Keys.Alt ) 
    {
       //Do Stuff here
    }
    return base.ProcessCmdKey(ref msg,keyData);
 }

【讨论】:

  • 如 cmets 中所述,这会让用户感到沮丧。强制作用于包含ControlAlt每个组合键?并可能使其他有效需求短路?呃。
猜你喜欢
  • 2022-01-02
  • 2010-11-23
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多