我的c#控制台应用程序显示一个Windows表单供用户登录,我在登录表单的顶部添加了一个“帮助”按钮,以防万一任何用户有任何疑问c# - 检测Windows窗体标题栏中何时按下帮助按钮?-LMLPHP

我要完成的工作是在用户按下“帮助”按钮时弹出一个MessageBox()对话框。我已经做了一些研究,但仍然找不到任何可行的解决方案。任何帮助将不胜感激!谢谢您的时间。

最佳答案

根据MSDN的处理方式是处理Windows WM_HELP消息:


  DS_CONTEXTHELP
  
  在对话框的标题栏中包含一个问号。当用户单击问号时,光标会更改
  指向带有指针的问号。如果用户随后单击控件
  在对话框中,控件收到WM_HELP消息。控制
  应将消息传递给对话框过程,该过程应调用
  使用HELP_WM_HELP命令的功能。帮助应用
  显示一个弹出窗口,通常包含该控件的帮助。
  
  请注意,DS_CONTEXTHELP只是一个占位符。当对话框是
  创建后,系统检查DS_CONTEXTHELP,如果存在,
  将WS_EX_CONTEXTHELP添加到对话框的扩展样式。
  WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX或
  WS_MINIMIZEBOX样式。


简而言之,您需要为表单中的控件实现WndProc方法(不幸的是,该方法需要从其基类中单独派生):

const int WM_HELP = 0x53;

protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        case WM_HELP:
            // Your handler here
            break;
        default:
            base.WndProc(ref m);
            break;
     }
}

关于c# - 检测Windows窗体标题栏中何时按下帮助按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37448946/

10-16 16:52