【问题标题】:Detect when help button is pressed in title bar of Windows Form?检测何时在 Windows 窗体的标题栏中按下帮助按钮?
【发布时间】:2016-05-25 22:55:38
【问题描述】:

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

我想要完成的是在用户按下帮助按钮时弹出MessageBox()。我已经做了一些研究,但仍然无法找到任何可行的解决方案。任何帮助将不胜感激!


感谢您抽出宝贵时间。

【问题讨论】:

标签: c#


【解决方案1】:

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

DS_CONTEXTHELP

在对话框的标题栏中包含一个问号。当用户点击问号时,光标会改变 到一个带指针的问号。如果用户然后单击控件 在对话框中,控件会收到 WM_HELP 消息。控制 应该将消息传递给对话框过程,该过程应该调用 该函数使用 HELP_WM_HELP 命令。帮助应用程序 显示一个通常包含控件帮助的弹出窗口。

请注意,DS_CONTEXTHELP 只是一个占位符。当对话框出现 创建后,系统会检查 DS_CONTEXTHELP,如果存在, 将 WS_EX_CONTEXTHELP 添加到对话框的扩展样式中。 WS_EX_CONTEXTHELP 不能与 WS_MAXIMIZEBOXWS_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;
     }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多