多个 WindowsFormsHost 叠加顺序调整

  • Post author:
  • Post category:其他


工作中遇到多个 WindowsFormsHost 包装的控件叠加顺序的调整问题,用了 BingToFront 和 BringToBack,不起效。后来在研究 AvalonDock 控件源码时发现其内部类似问题的处理是调用 Win32 的一个API(BringWindowToTop)解决的。效仿之,解决了我的问题。

函数定义如下:

1 [DllImport("user32.dll")]
2 [return: MarshalAs(UnmanagedType.Bool)]
3 public static extern bool BringWindowToTop(IntPtr hWnd);

hWnd 直接传WindowsFormsHost.Handle,试过传其内部定义的Panel.Handle,显示为一条白线(没深究)。每调用一次,会将当然句柄的WindowsFormsHost置于最上层,如果有其他WindowsFormsHost出现在当然控件位置会将其覆盖,如需一直保持在最上层,再次调用此函数即可。

工作笔记,欢迎讨论。

转载于:https://www.cnblogs.com/dipwater/archive/2012/11/01/dipwater-WindowsFormsHost.html