窗体类型
窗体类型分为两大类:单文档窗体界面(SDI)和多文档窗体界面(MDI)
一,单文档窗体界面:有一个主窗体,其他的窗体都是辅助窗体和对话框,主窗体一旦关掉,整个程序全部结束
案例1:如何做登录窗体
1,确定好主窗体,在Program.cs文件中的Main函数中使用Application.Run()启动主窗体——Application.Run(new Main());
2,做一个登录窗体,在登录验证完成后不要关闭窗体也不要隐藏窗体,只需要给this.DialogResult赋个值即可
private void button1_Click(object sender, EventArgs e)
{
//验证用户名和密码是否正确
if (textBox1.Text == "aaa" && textBox2.Text == "bbb")
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
textBox1.Text = "";
textBox2.Text = "";
}
}
3,在Program.cs的Main函数中,在Application.Run()运行主窗体之前,先启动登录窗体(用ShowDialog的形式启动)
如果对话框返回确定的标识时,就运行下面的Application.Run();
Form1 f = new Form1();
DialogResult result = f.ShowDialog();
if (result == DialogResult.OK)
{
Application.Run(new Main());
}
二,多文档窗体界面:一个父窗体里面包含多个子窗体,子窗体无法移动到父窗体外面,父窗体关闭子窗体全部关闭
如何做一个多文档窗体界面
1,做一个窗体,设置窗体的属性:IsMdiParent = true(以此作为父窗体)
2,做一个子窗体,并在窗体的代码中实例化出该窗体
3,设置子窗体的属性:MdiParent=this //this代表的是当前的父窗体对象
4,显示子窗体
ChildForm f = new ChildForm();
f.MdiParent = this;
f.Show();
父窗体中重要的属性
IsMdiContainer——是否是父窗体
MdiChildren——所有的子窗体的集合 ,是一个Form集合的类型
ActiveMdiChild - 当前正在顶层的子窗体,是一个Form类型
案例1:使用菜单添加多个子窗体,关闭所有子窗体,关闭当前子窗体。
1,做一个窗体,从菜单与工具栏内拖一个MenuStrip控件,输入文字
2,新建子窗体代码
childform cf=new childform();
cf.MdiParent=this;
cf.show();
3,关闭所有子窗体代码
foreach (childform cf in this.MdiChildren)
{
cf.Close();
}
4,关闭当前子窗体代码
childform cf= this.ActiveMdiChild as childform;
cf.Close();
案例2:只生成一个子窗体。如果已经有了一个子窗体的话,就不再添加新的子窗体。
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
bool ss = false; //定义一用来控制子窗体的显示个bool型的变量
foreach (Form f in this.MdiChildren) //遍历当前窗体的所有子窗体
{
if (f is childform) //如果其中有childform窗体,则将false赋给ss,跳出循环
{
ss = true;
break;
}
}
if (ss == false) //如果其中没有childform窗体就新建一个childform窗体
{
childform z = new childform();
z.MdiParent = this;
z.Show();
}
}