MDI的使用
来源:互联网 发布:sql中in的用法 编辑:程序博客网 时间:2024/06/05 09:39
mdi可能是大点的WINFORM系统都要用的。废话不多说(我也不知道要说什么)直接进入正题。我用四个窗体来实现这个小功能,一个登陆窗体,一个主窗体,两个子窗体。
首先从最开始的Main()开始,将你的主窗体设置为最先运行的窗体
接下来创建登陆系统,登陆成功进入主界面,退出则腿掉整个系统。如何验证用户名和密码是否正确,以及窗体的布局我就不说了。要想使每次启动时,登陆窗体都在中间位置只要在属性中设置startPosition为CenterScreen就可以了。好了,通常都要在这个窗体中设置个全局变量来标志窗体的状态。
当确定用户输入正确的时候把blCanLogin = 2,然后关闭登陆窗体。退出的时候设置为blCanLogin = 1,然后关闭登陆窗体。为什么这样做,等会介绍。
现在来说主窗体。首先在属性中ISMdiContainer为true。主窗体的FORM_LOAD中这样设置。意思是除了登陆正确否则全部窗体关闭。
{
Login login = new Login();
login.ShowDialog();
if (Login.blCanLogin != 2) { this.Close(); }
}
通常主窗体启动子窗体都是用menuStrip来设置的,在里面加上你需要的菜单,我需要的就是“窗体1”和“窗体2”就可以了。在窗体1和窗体2中设置如下代码,即设置Mian为他们的主窗体。
{
InitializeComponent();
this.MdiParent = parent;
}
到这里其实大部分的工作已经做完了,但其实在运行时回出现很多问题。如:同一个窗体会打开很多个,点击菜单窗体不能放到最上面等等。所以要判断子窗体是否已经打开的操作。我仅已窗体2为例:
我写了个方法来判断窗体是否已经打开:如果窗体存在了就 F1.Activate();把窗体放到最上面
{
foreach (Form F1 in this.MdiChildren)
{
if (F1.Name == form1)
{
F1.Activate();
return true;
}
}
return false;
}
对窗体2来说:当窗体没打开就把该窗体家到子窗体数组中,并打开。
{
bool bo = check("Form2");
if (bo == false)
{
Form2 form = new Form2(this);
form.MdiParent = this;
form.Show();
}
}
这样就可以了,上面的问题在这些代码中也都解决了。满意吧!
- MDI的使用
- MFC应用程序中指针的使用 MDI
- 使用WPF实现MDI窗体的方法
- 使用JInternalFrame实现MDI
- irrlicht在mfc mdi窗口中使用的问题
- 使用QT实现MDI风格的主窗体
- 使用QT实现MDI风格的主窗体
- 使用Qt实现MDI风格的主窗体
- MDI窗口的笔记
- MDI窗口的笔记
- MDI应用程序的构成
- 霸道的MDI
- 19.1 MDI 的概念
- C# winForm MDI使用小记
- 使用反射加载MDI窗体
- MDI
- MDI
- java中MDI的实现
- 相思红豆相思劫
- 捕获Esc按键消息
- 电话中的事
- 关键字广告:百度雅虎Google已三分天下(转载)
- BSP结构文件分析
- MDI的使用
- 男人娶老婆的资本
- Java EE5.0
- Web下的整体测试
- SQLSTATE 消息
- [转]十天学会ASP.NET
- 关于更新技术(About Update Techniques)-SM13 SM14 SM11
- asp高效率分页代码
- 软件工程师之路-软考(中级)3