我正在开发 C#winforms 。
我有一个功能Validate()
,它存在于CS文件中。当我调用函数Validate()
时,它会使用
ErrorForm ew = new ErrorForm(Errors); // Errors is list<string>
ew.Show();
但是当我再次打电话时,会打开一个新窗口,我的上一个窗口也会打开。我必须手动关闭该窗口。
是否有任何可用的方法,如果我再次致电validate()
,它将关闭当前的ErrorForm
并开启新的ErrorForm
。
答案 0 :(得分:2)
尝试这样的事情,伪代码 ..
public class MyClass
{
ErrorForm ew = null;
public void Validate()
{
if(ew !=null && !ew.IsDisposed)
ew.Close();
ew = new ErrorForm(Errors);
ew.Show();
}
}
答案 1 :(得分:1)
您可以使用以下集合作为静态属性访问:
Application.OpenForms
答案 2 :(得分:1)
最简单的解决方案是调用ew.ShowDialog(this)
,它将ErrorForm保存在主窗体之上。
如果您真的想调用Form.Show()
方法,可以在ErrorForm中实现Singleton pattern并调用GetInstance。在GetInstance方法中,您可以关闭它或重复使用它。
public class ErrorForm
{
private static ErrorForm instance;
private ErrorForm() {}
public static Singleton GetInstance()
{
if (instance == null)
{
instance = new ErrorForm();
}
else //OR Reuse it
{
instance.Close();
instance = new ErrorForm();
}
return instance;
}
public Errors ErrorMessages
{
set {...}
}
}
在验证方法
中public void Validate()
{
ErrorForm ef = ErrorForm.GetInstance();
ef.ErrorMessages = errors;
ef.Show();
}
答案 3 :(得分:1)
试试这个:
var f1=Application.OpenForms["ErrorForm"];
if(f1!=null)
f1.Close();
f1= new ErrorForm(Errors);
f1.Show();
答案 4 :(得分:0)
您可以使用 ShowDialog()