首页 > Windows开发 > 详细

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

时间:2016-05-13 01:07:57      阅读:303      评论:0      收藏:0      [点我收藏+]

问题

  • 这几天在优化程序的时候发现了一个问题,就是在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#中的窗体制作有用。

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

原文:http://blog.csdn.net/sugaryott/article/details/51345926

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!