【问题标题】:C# GUI macro libraries or general approaches?C# GUI 宏库或通用方法?
【发布时间】:2011-01-09 22:10:33
【问题描述】:
在 C# WinForms 应用程序中(在 .NET 3.5 上,可能很快 4.0),您将如何允许用户定义自己的宏?例如,用户可能希望按键按 CTRL+K 表示单击菜单中的某个项目,并在菜单打开的对话框中输入一些文本,然后按“确定”关闭对话框。
理想情况下,我们的软件可以提供宏录制功能,使用户能够开始录制、执行所需的任务并停止录制以获取可用的宏。这是他们习惯于旧版软件的一个功能,它是用 FoxPro 编写的,一个内置了这种功能的工具。
对我们而言,最好的选择显然是获取和使用经过验证的某种第三方库,但我们也非常感谢推出我们自己的版本的想法。
【问题讨论】:
标签:
c#
winforms
user-interface
macros
【解决方案1】:
如果我正在处理这样的事情,我可能会集成一个通用事件处理程序来记录您希望可记录的事件(可能作为添加到可用按钮的单个处理程序或通过创建 RecordedEventHandler 类来扩展 EventHandler 和然后将您的所有事件处理子类化——这些只是头上的想法,所以我没有研究哪个最可行),只需使用“记录宏”按钮作为开关。可能只需要记录几种不同类型的事件 - 按钮单击、任何文本字段上的键盘输入、键盘快捷键和任何鼠标输入字段上的鼠标输入,因此虽然可以正常工作,但这并不是一项非常繁重的任务了解如何存储和绑定宏以及如何促进导入和导出(如果您愿意这样做的话)虽然很耗时,但在技术上并不具有挑战性。我不知道有任何用于此目的的库(尽管我希望有一些库)并且考虑到它我不确定集成类似的东西会有多容易,因为大多数人在宏方面的需求可能是不同。
如果您需要能够记录应用程序周围的事件,那么您可能会发现 ManagedWinApi 会有所帮助。
【解决方案2】:
我对宏录制功能的“命令设计模式”有很好的经验。每个命令都会触发一些应用程序范围的(例如静态)事件,其中包含有关参数等的信息......记录器会监听此事件并保持命令调用的序列。