【C#】MDI窗体中,将子窗体置于父窗体控件之上的方法

  • 问题
  • 解决办法
    • user32dll
    • SystemRuntimeInteropServices
    • 代码
  • 总结

问题

  • 这几天在优化程序的时候发现了一个问题,就是在MDI窗体中的子窗体被激活显示出来之后,总是被主窗体中的控件遮挡(各种控件)。解决的方法也试了很多但是都不是很满意,由于C#的WINFROM窗体没有SETPARENT的方法,所以很多东西都需要自己去编写,下面就贴一个至少让我感觉非常不错的方法吧。

解决办法

user32.dll

  • user32.dll是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。

System.Runtime.InteropServices

  • System.Runtime.InteropServices 命名空间提供各种各样支持 COM interop 及平台调用服务的成员,此命名空间提供了多种类别的功能。

  • 简单的来说,就是提供在窗体运行时的各种服务。

代码

  • 了解了上面两种工具的大致意思,剩下的就是怎么解决问题了。代码如下:
using System.Runtime.InteropServices;  '调用命名空间'

[DllImport("user32")];  '引用DLL'

public static extern int SetParent(int children,int parent);        '''编写函数过程'''

'调用过程'
'这里默认MDI窗体为This'
form1 fm=new form1();
fm.MdiParent=this;
fm.show();
SetParent((int)fm.Handle,(int)this.Handle);

总结

  • 其实还有一些其他的方法可以实现类似的效果,什么两个窗体合成啊、使用PANEL控件啊、设置控件图层啊之类的,但是在这种情况下都不能真正的实现这样的效果,不过方法还是要灵活运用的,不能学死。希望上面的方法对你在C#中的窗体制作有用。

你可能感兴趣的:(windows,优化,控件,界面)