初学C#,今天做一个很简单的程序,出现如下问题.
新建了两个窗体,在from1窗体中实例化一个form2窗体,而后我想通过form2窗体中的一个按钮来同时完成关闭这两个窗体.
具体代码如下:
form1 代码
namespace WMsystem
{
public partial class start : Form
{ public start()
{
InitializeComponent();
}
private void start_Load(object sender, EventArgs e)
{
yanzheng f = new yanzheng(this);
f.Show();
} }
}
form2代码
namespace WMsystem
{
public partial class yanzheng : Form
{
public yanzheng( start f2)
{
InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂! } private void qxbutton_Click(object sender, EventArgs e)
{ this.Close();
f3.Close(); //想在这个地方同时关闭两个窗体.
} private void yanzheng_Load(object sender, EventArgs e)
{
} }
}
请高手帮忙指点一下,超郁闷!
新建了两个窗体,在from1窗体中实例化一个form2窗体,而后我想通过form2窗体中的一个按钮来同时完成关闭这两个窗体.
具体代码如下:
form1 代码
namespace WMsystem
{
public partial class start : Form
{ public start()
{
InitializeComponent();
}
private void start_Load(object sender, EventArgs e)
{
yanzheng f = new yanzheng(this);
f.Show();
} }
}
form2代码
namespace WMsystem
{
public partial class yanzheng : Form
{
public yanzheng( start f2)
{
InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂! } private void qxbutton_Click(object sender, EventArgs e)
{ this.Close();
f3.Close(); //想在这个地方同时关闭两个窗体.
} private void yanzheng_Load(object sender, EventArgs e)
{
} }
}
请高手帮忙指点一下,超郁闷!
f3=f2;
private void qxbutton_Click(object sender, EventArgs e)
{
f3.Close(); //想在这个地方同时关闭两个窗体.
this.Close();
}
这样呢?
2.如果想要关闭某一些窗体,按照你代码的思维逻辑,可以这样写(红字为修改或添加) private start _f2; public yanzheng()
{
InitializeComponent();
} public yanzheng(start f2)
{
InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂!
_f2 = f2; } private void yanzheng_Load(object sender, EventArgs e)
{ } private void qxbutton_Click(object sender, EventArgs e)
{
this.Close();
_f2.Close(); //想在这个地方同时关闭两个窗体.
}3.线程控制某些窗体的特定操作
属性里放上不同的关联属性
想关几个关几个
using(form2 frm=new form2())
{
frm.ShowDialog();
this.Close();
}
Show()方法不是有个带参的重载嘛
public yanzheng( start f2)
{
f= f2;
InitializeComponent(); //在这个里面f2能用,但到下面就不能用了.很是不懂! }
应该定义一个全局变量,这样就可以在其他地方用f来控制了。private void qxbutton_Click(object sender, EventArgs e)
{ this.Close();
//f3.Close(); //想在这个地方同时关闭两个窗体.
}
在添加个关闭事件,在关闭事件里调用
private void formclosing(object sender, EventArgs e)
{
f3.Close(); //想在这个地方同时关闭两个窗体.
}
private void Form1_Closed(object sender, System.EventArgs e)
{
//用事件去关闭主窗口
closefather();
}
public delegate void childclose();
委托实现
{ this.Close();
//在这new一个f3的对象让这个对象调用 对象名.hide();试一试
f3.Close(); //想在这个地方同时关闭两个窗体.
}
自己的closing事件中关闭自己打开的那个窗体
如果涉及的窗体比较多建议做一个窗体列表。List<form>
来实现关闭