快捷键控制:有一部分是全局的如F1是帮助,一部分是子窗体中的快捷键,如F3是返回前一个窗体; 那么像全局的快捷键我是要放在主窗体中还是所有子窗体继承的同一个类中?如果是放
在主窗体中如何控制?

解决方案 »

  1.   

    全局的,你要 用 Application.AddMessageFilter 加入消息过虑捕捉按键
    不然你无法在做到全局(除RegesterHotKey API外)
      

  2.   

    // 命令键是始终比常规输入键具有优先权的键。命令键的示例包括快捷键和菜单快捷方式。
    // 在派生类中重写 ProcessCmdKey 方法时,控件应返回 true 以指示它已处理该键。
    // 对于未由该控件处理的键,应返回调用基类的 ProcessCmdKey 方法的结果。using System.Windows.Forms;class Test : Form
    {
      protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
      {
        switch (keyData)
        {
          case Keys.Apps              : // 应用程序键
          case Keys.RWin              : // 右 Win 键
          case Keys.Menu | Keys.Alt   : // Alt 键
          case Keys.F4   | Keys.Shift : // Shift-F4 键
            MessageBox.Show("Key Press : " + keyData);
            return true;
        }
        return base.ProcessCmdKey (ref msg, keyData);
      }  static void Main()
      {
        Application.Run(new Test());
      }
    }