码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2016-05-13 01:09:23      阅读:260      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!