gpt4 book ai didi

c# - 用户帮助的所有控件的全局事件处理程序

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:02 25 4
gpt4 key购买 nike

嗨,我正在扩展一个用 C# 编写的 Windows 应用程序,以便在用户按下 F1 键时(在焦点控件的上下文中)为他们提供帮助。

我想做的是利用 Control.HelpRequested 事件,但我不确定如何扩展所有控件来处理此事件。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.helprequested.aspx

“手动”更新每个控件来处理此事件并不是真正可行的,我真的不喜欢循环遍历表单中的所有控件(当表单打开时)以关联事件处理程序的想法。

有没有一种巧妙的方法来扩展表单的所有控件以处理特定事件?

这只是编造的,但我几乎觉得我应该能够写出这样的东西

[HandleEvent Control.HelpRequested, ApplyTo Typeof(Control)]void MyEventHandler(object sender, EventArgs e){// code to handle event...}

非常感谢任何关于不同方法的建议或想法 - 谢谢

最佳答案

此示例 ( http://www.codeproject.com/KB/cs/ContextHelpMadeEasy.aspx) 展示了如何在 WndProc 中捕获 F1 键,然后仅显示一个方法的帮助。

那篇文章的想法是实现一个暴露控件 ID 的接口(interface),然后根据该 ID 显示上下文帮助。然后,F1 处理程序检查您的控件是否实现了该接口(interface),如果没有,则它检查控件的父级,直到找到该接口(interface)的实现。

但更简单的方法(如果您不想为每个控件添加 ID)是修改 F1 处理程序以显示基于静态类型字典(例如 Dictionary)的上下文帮助,其中包含主题 ID每个支持的控件。因此,只要您需要将主题与指定控件相关联,就可以更新字典。

同样,通过向该字典添加某种提供程序(委托(delegate)或接口(interface))来为该方法添加更多抽象是更明智的做法。例如,您可能需要额外的逻辑来根据控件的类型、名称或其他一些属性显示主题。

关于c# - 用户帮助的所有控件的全局事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com