在Revit开发中如果使用modeless的对话框,经常容易被Revit窗体覆盖,但是如果将窗体设为Topmost的话,当Revit失去焦点后,它又会遮住其他程序的界面,比如将Revit最小化后,TopMost的窗口没有随着Revit最小化,而是孤零零的显示在屏幕上并且遮挡了其他窗口。其实只需要将Revit的窗体设置为弹出窗体的Ower就可以了,这样也不需要设置topmost。
代码如下:
1 [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetParent")] 2 public extern static IntPtr SetParent(IntPtr childPtr, IntPtr parentPtr); 3 4 IntPtr rvtPtr = Process.GetCurrentProcess().MainWindowHandle; 5 SetParent(MyForm.Handle, rvtPtr);
需要using System.Diagnostics命名空间;