窗体类型:
SDI MDI
单文档窗体界面,多文档窗体界面
一、单文档窗体界面:
有一个主窗体,其它的窗体是辅窗体和对话框。
主窗体一旦关掉,整个程序全部结束。
案例一:如何做登录?
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()运行主窗体之前,启动登录窗体(用对话框的形式启动)
如果对话框返回成功的标识时,就运行下面的Application.Run();
Form1 f = new Form1();
DialogResult result = f.ShowDialog();
if (result == DialogResult.OK)
{
Application.Run(new Main());
}
二、多文档窗体界面:
一个父窗体,里面包含多个子窗体。子窗体无法移到窗体外面,父窗体关掉子窗体全部关闭。
1.确定父窗体。设置父窗体的属性:IsMdiParent = true
2.做一个子窗体。
3.在窗体的代码中,实例化子窗体。
4.设置子窗体的属性:MdiParent,设置成父窗体对象
ChildForm f = new ChildForm();
f.MdiParent = this; //这里的this代表的就是父窗体对象。
5.显示子窗体
f.Show();
父窗体中的重要属性:
IsMdiParent - 是否是父窗体 bool
MdiChildren - 所有的子窗体的集合。 Form[]
ActiveMdiChild - 当前正在顶层的子窗体。 Form
案例一:使用菜单添加多个子窗体,关闭所有子窗体,关闭当前子窗体。
案例二:只生成一个子窗体。如果已经有了一个子窗体的话,就不再添加新的子窗体。
public partial class MDIForm : Form
{
public MDIForm()
{
InitializeComponent();
}
private void MDIForm_Load(object sender, EventArgs e)
{
OtherForm om = new OtherForm();
om.MdiParent = this;
om.Show();
}
private void 新建子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
childForm child = new childForm();
child.MdiParent = this;
child.Show();
}
private void 关闭当前子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
childForm child = this.ActiveMdiChild as childForm;
child.Close();
}
private void 关闭所有子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (childForm child in this.MdiChildren)
{
child.Close();
}
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
bool isExsite = false;
foreach (Form child in this.MdiChildren)
{
if (child is childForm)
{
isExsite = true;
break;
}
}
if (isExsite == false)
{
childForm child = new childForm();
child.MdiParent = this;
child.Show();
}
}
}