C# 如果表单已在c中打开,如何关闭表单#
我正试图一次打开一张表格。如果用户试图在一个表单已打开时打开另一个表单,则不应打开该表单 我的代码:C# 如果表单已在c中打开,如何关闭表单#,c#,forms,C#,Forms,我正试图一次打开一张表格。如果用户试图在一个表单已打开时打开另一个表单,则不应打开该表单 我的代码: else if (instrument_name == "Micrometer") { this.Hide(); Form2 f2 = new Form2(); f2.ShowDialog(); this.readclose() } 仅当此表单尚未打开时,才会打开表单2 解决办法可以是: Form fc = Application.OpenForms["Upda
else if (instrument_name == "Micrometer")
{
this.Hide();
Form2 f2 = new Form2();
f2.ShowDialog();
this.readclose()
}
仅当此表单尚未打开时,才会打开表单2
解决办法可以是:
Form fc = Application.OpenForms["UpdateWindow"];
if (fc != null)
fc.Close();
fm.Show();
但是我不知道我应该在哪里写这个,因为如果我把这个Form1\u Load
放进去,那么很明显,即使是第一次,它也不会包含null
我应该把它放在程序文件中吗?您可以创建类似“表单管理器”的smth,它将监视所有打开的表单。 在窗体关闭的情况下,管理器会打开它,否则会重新打开它
此解决方案与您的类似,但在这种情况下,所有逻辑都集中在一个地方,易于理解或维护 你可以用不同的方法。但其中之一是实现单音模式。为此,您必须按以下方式修改Form2:
public partial class Form2 : Form
{
private static Form2 Instance;
private Form2()
{
InitializeComponent();
}
public static Form2 GetForm2Instance()
{
if(Instance==null) Instance = new Form2();
return Instance;
}
public static void CloseOldForm2AndOpenNewForm2()
{
if (Instance != null) Instance.Close();
Instance = new Form2();
Instance.Show();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Instance = null;
}
}
正如您所看到的,Form2()是私有的。要加载表单,必须使用以下代码:
//Case 1 if you porefer to use existing instance of the Form2
Form2 myForm = Form2.GetForm2Instance();
myForm.Show();
//Case 2 if you prefer to close old one and create a new Form2
Form2.CloseOldForm2AndOpenNewForm2()
你试过搜索吗?请保留对表单的引用。
ShowDialog
blocks。对不起,您可以吗elaborate@DanieA. WhiteTry使Form2成为全局变量是否有任何类似按钮的控件来打开第二个form?如果能对我的答案有任何回应,那就太好了。这能解决你的问题吗?是的,不是,可能是吗?