Mstn SDK安装后在C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\WPF下有两个示例项目演示了在Mstn中如何使用WPF技术实现各种各样的对话框,其中有一个名为“DockableWindow”的类型(在程序集C:\Program Files\Bentley\MicroStation CONNECT Edition\MicroStation\Assemblies\Bentley.MicroStation.WPF.dll中),通过从此类型可以实现可停靠的窗体。但是如果想要监听窗体的移动(Move)事件时,会发现没有“Move”事件,那么该如何监此事件呢?实际上我们的窗体是作为一个子控件内嵌在Mstn的子窗体中了,通过“DockableWindow”的“WindowContent”属性可以获取或者设置这个子窗体的各种属性。而在此属性下有一个名为“FloatingHostForm”的属性,这个属性类型为“System.Windows.Forms.Form”。对于使用过.Net Winform技术开发过对话框窗体的开发人员来说,这个类型不会陌生,Winform技术实现的对话框类型基本上都是这个类的子类。而“FloatingHostForm”这个属性实际上就是我们利用“DockableWindow”实现的对话框的父窗体,我们前面说的监听“Move”事件就可以通过这个属性实现,如下代码所示。其他事件也可以通过此属性去监听。
public class MyDockableWindow : DockableWindow { public MyDockableWindow() { this.WindowContent.FloatingHostForm.Move += FloatingHostForm_Move; ... this.Attach(Program.Addin, "MyDockableWindow", new Size(100, 100)); } private void FloatingHostForm_Move(object sender, EventArgs e) { ... } }