关闭c#的另一个窗体
本文关键字:窗体 另一个 关闭 | 更新日期: 2023-09-27 18:18:45
我有2个windows表单,1个登录表单和1个主表单。我想关闭主表单和登录表单在一起。我该怎么办?
我试过这个命令;
Form2 ac = new Form2();
ac.Show();
this.Close();
,但这关闭所有的形式。我只想关闭Form1
如果你的Main方法包含:
Application.Run(form1);
当您关闭form1
时,您的应用程序关闭。
您可以在显示ac时"临时"隐藏form1。使用ShowDialog来阻塞您的代码,直到ac表单关闭:
using (Form2 ac = new Form2()) {
this.Hide();
if (ac.ShowDialog() == DialogResult.OK) {
this.Show();
} else {
// Exit app
this.Close();
}
}
如果你关闭主窗体当然所有的窗口都会关闭,主窗体包含所有其他的表单,你的Q不清楚,你能给我们一个清晰的片段,将显示你想做什么?
取决于哪个表单调用哪个表单(以及如何调用),您必须以某种方式将登录表单内的请求"弹出"到主表单。
假设形式1模态地调用形式2:
public partial class Form1 : Form
{
// ...
private void callForm2()
{
var form2 = new Form2();
if ( form2.ShowDialog( this )== DialogResult.Abort )
{
// Close myself if called form instructs me to close.
Close();
}
}
}
如您所见,我使用DialogResult.Abort
作为"通信信号"关闭。在Form2
中可以这样做:
public partial class Form2 : Form
{
// ...
private void buttonCloseAll_Click( object sender, EventArgs args )
{
// Close myself _and_ return the abort result to the caller.
DialogResult = DialogResult.Abort;
}
}
请注意,这只是一个(不完整的例子)。
您打开的表单是应用程序的主要表单。这与您如何命名表单或表单上的内容无关。如果您关闭主表单,您的应用程序将终止。
在这种情况下你可以做两件事:
- 隐藏你的登录表单而不是关闭它 首先打开你的主表单,并使用你的登录表单作为一个模态对话框在它的顶部。在这种情况下,您可以关闭登录表单,让您的应用程序继续运行。