方式一_038期
- 修改窗体的 TopLevel = false;
- 指定窗体的父窗体
- 显示窗体
Form frm1,frm2;
private void 密码修改ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (frm1 == null || frm1.IsDisposed == true)
{
//判断窗体对象是否被创建是否为null frm1.IsDisposed判断对象是否以释放 ==> 注: 窗体关闭后 仍然存在,所以要使用此条件
frm1 = new 密码修改();
frm1.TopLevel = false; //关闭顶级窗口类型
frm1.Parent = toolStripContainer1.ContentPanel; //指定窗体的父容器
frm1.Show(); //显示窗体
}
}
方式二
- 使用mdi方法解决
- 指定窗体的MDI父窗体为当前窗体 frm2.MdiParent = this;
- 在设计界面将 主窗体的 iSMdiContainer属性设置为true
Form frm1,frm2;
private void 密码修改ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (frm1 == null || frm1.IsDisposed == true)
{
//判断窗体对象是否被创建是否为null frm1.IsDisposed判断对象是否以释放 ==> 注: 窗体关闭后 仍然存在,所以要使用此条件
frm1 = new 密码修改();
frm2.MdiParent = this; //this代表当前窗体 (本质上指得是当前类)
//frm1.TopLevel = false; //关闭顶级窗口类型
frm1.Parent = toolStripContainer1.ContentPanel; //指定窗体的父容器
frm1.Show(); //显示窗体
}
}
多窗体单独打开_008期
要点
- 理解两种方法
- 掌握窗体跳转方式
- 理解窗体隐藏
- 创建窗体对象 new frm1().Show();
1.解决方法一 :隐藏窗体
把第一个窗体隐藏起来,客户就看不到了
调用当前窗体得 Hide()方法 this.hide(); 只是被隐藏 但仍然在运行
- 解决方法二:释放原窗体对象
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "123")
{
//new 多窗体跳转.Form2().Show();
//多窗体跳转.Form1.ActiveForm.Hide();不适用
//this.Hide();
//Hide();等价于上面
//调用ShowDialog()默认为模态的方式 ==>就是当前窗体为焦点,不能点击其他窗体
//new 多窗体跳转.Form2().ShowDialog()
//委托方式 线程方式
Thread thread = new Thread(delegate () { new 多窗体跳转.Form2(ShowDialog(); });
thread.Start();
Dispose(); //Close();
}
}
- 让每个窗体单独启动
修改 Program.cs文件 在Main方法中添加窗体的启动代码
- 在启动类自定义一个标记
- 判断标记是否为true
- 监控第一个窗体的状态