检测何时在Windows窗体的标题栏中按下帮助按钮?

时间:2016-05-25 22:55:39

标签: c#

我的c#控制台应用程序显示一个Windows窗体供用户登录,我已在登录表单的顶部添加了一个帮助按钮,以防任何用户有任何问题enter image description here

当用户按下“帮助”按钮时,我想要完成的是弹出MessageBox()。我做过一些研究,但仍然无法找到任何有效的解决方案。非常感谢任何帮助!

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

根据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;
     }
}