我正在开发一个应用程序,其中有一个主窗体和几个可以同时使用的其他窗体。当用户单击打开另一个表单时,我希望这样,如果表单已经打开,则单击该表单的按钮不会再次打开该表单。
showDialog不起作用,因为用户仍然需要访问主窗体上的控件。
这是我的帮助窗口的代码,所有其他窗体都以相同的方式打开。
private void heToolStripMenuItem_Click(object sender, EventArgs e)
{
Form help = new help();
help.Show();
}
发布于 2010-01-07 05:17:40
使用单例:
class HelpForm : Form
{
private static HelpForm _instance;
public static HelpForm GetInstance()
{
if(_instance == null) _instance = new HelpForm();
return _instance;
}
}
.......
private void heToolStripMenuItem_Click(object sender, EventArgs e)
{
HelpForm form = HelpForm.GetInstance();
if(!form.Visible)
{
form.Show();
}
else
{
form.BringToFront();
}
}
发布于 2010-01-07 05:18:16
或者,您也可以使用应用程序的打开窗体来查看它是否已打开
btn_LaunchHelp(object o, EventArgs e)
{
foreach (Form f in Application.OpenForms)
{
if (f is HelpForm)
{
f.Focus();
return;
}
}
new help().Show();
}
编辑:更清楚地说,这允许用户随时关闭帮助,并且比保存对帮助窗口的引用更容易管理。没有什么需要清理的,也没有什么需要维护的。
发布于 2010-01-07 04:57:21
根据您想要管理的方式,您可以做一些事情:
当窗体在调用窗体中处于disposed
https://stackoverflow.com/questions/2018272
复制