微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C#中的Windows窗体上以编程方式激活上下文帮助模式

如何解决如何在C#中的Windows窗体上以编程方式激活上下文帮助模式

我正在用C#(Visual Studio,.net Framework 4.7.2)构建Windows窗体应用程序。

我已经创建了一个表单,并将HelpButton属性设置为True,以便上下文帮助按钮出现在窗口的标题栏上,如下所示:

enter image description here

在通常情况下,用户可以单击此帮助按钮,从而激活上下文帮助模式。然后,他们单击控件以显示上下文相关的帮助。 (将HelpRequested事件调度到控件。)

我希望能够使用键盘快捷键激活“上下文帮助模式”,以便用户不必单击标题栏上的帮助按钮。换句话说,我需要以编程方式激活上下文帮助模式。怎么做?

请理解,我并不是在问如何通过按控件上的热键来打开上下文相关的帮助。 (即,在某个控件着重显示该控件的帮助时,按F1键)。这不是我想要的。我想以编程方式激活上下文帮助模式(光标变为问号),以便用户可以单击所需的控件以获取上下文相关的帮助。)

表单具有“ OnHelpButtonClicked()”功能,该功能应触发“帮助按钮”单击事件,因此我尝试了以下操作,但均未成功:

CancelEventArgs ee = new CancelEventArgs();
this.OnHelpButtonClicked(ee);

如何在不单击窗口标题栏上的“帮助”按钮的情况下以编程方式打开上下文帮助模式?

谢谢您的帮助!

解决方法

该解决方案,感谢@nilsK和以下帖子:How to do context help ("what is this?" button) in WinForms?需要向表单发送Windows消息以触发上下文帮助模式:

在窗口的主类中:

private const int SC_CONTEXTHELP = 0xf180;
private const int WM_SYSCOMMAND = 0x112;
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd,int msg,IntPtr wp,IntPtr lp);

在按键处理程序或其他事件中触发上下文帮助模式:

SendMessage(this.Handle,WM_SYSCOMMAND,(IntPtr)SC_CONTEXTHELP,IntPtr.Zero);

有效!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。