2021/09/02

在代码里调用Command和监控Command

作者 Leon

一般不会在一个工具里把所有功能的代码都写了,很多时候是相互调用,这些Command可以是自己开发的,也可以是系统自带的。方法如下:

ClientServiceProvider.CommandMgr.StartCommand(progId, CommandManager.CommandPriority.Normal)

当我们调用的3D自带命令有弹出窗口时,可能会遇到一个问题。这些窗口有些是模态的,有些是非模态的,模态的还好,程序会等到这个窗口结束再继续运行下面的逻辑,但如果是非模态的,我们自己的代码就不会暂停,直接走完了,那又该如何在弹出的窗口关闭后继续触发自己的业务逻辑,比如更新数据等操作呢。比较费劲的方法有同学可能想到了,通过Windows系统的API获取到当前活动窗口句柄,使用Form.FromHandle函数获得窗口,然后在窗口关闭事件中添加业务逻辑代码。其实有更简单的方法,3D本身的API中内置了一些专门监控命令状态的委托事件,如下截图,有命令被调用时触发的,命令开始时被触发的,命令停止时被触发的,命令挂起时被触发的,等等,我们只需要订阅这些委托事件再加上触发后的业务逻辑便可实现想要的功能。

这里我给大家截图了在VB里和C#的示例代码,C#里使用+=的写法,VB里使用AddHandler……, AddressOf……的写法。

0 0 投票数
文章评分