您的位置:首页 > 其它

[Windows应用程序]怎样建立winForm多文档窗口MDI

2010-07-28 02:59 363 查看
1、在VS2008中新建一个项目,将缺省页面改名为frmMain,把它的IsMdiContainer属性改为True(这样页面中间就不能放置普通的控件了)。

2、在工具箱中双击ToolStrip,给这个页面增加一个菜单条。点击菜单条上的图标让你选择控件类型(一般选择按钮)。选完一个再选一个



3、在项目中添加两个页面,缺省名称为Form1、Form2。

4、在主页面中,双击菜单条上第一个按钮,在其事件里写如下几行:

string childrenFormText = "Form1";
if (!ShowChildrenForm(childrenFormText))
{
Form1 frm = new Form1();
frm.MdiParent = this;
frm.Show();
}


5、同理单击第二个按钮,写入相同的程序(注意把Form1改成Form2)。

6、在后再加一个新的方法

//check children form exist or not. if exists, active
//maybe we can check the form type, instead of text
private bool ShowChildrenForm(string childrenFormText)
{
int i;

for (i = 0; i < this.MdiChildren.Length; i++)
{
//MessageBox.Show(this.MdiChildren[i].Text);
if (this.MdiChildren[i].Text == childrenFormText)
{
this.MdiChildren[i].Activate();
this.MdiChildren[i].WindowState = FormWindowState.Maximized;
return true;
}
//else {
//    this.MdiChildren[i].Hide();
//}
}
return false;
}


7、运行一下看看:



[后记]我在这里遇到了几个问题:

1、子窗口默认打开时最大化,刚打开时页面上部有一部分在父窗口的菜单条下显示不出来(好像位置往上串了),点击别的窗口,再点击原来的那个就好了。我说明白了吗?就是第一次点击时屏幕有跳动,显示内容不完全,子窗口顶部没露出来,多点击次就好了。也许在页面Load事件里,数据运算量太大了,如果没有数据连接,效果会好很多。

2、在一个子页面修改数据,另一个页面应该也有更新,怎么办好呢?

希望有知道的朋友给我一些提示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: