在我的 C# 应用程序中,我有一个可以从菜单命令打开的选项对话框。
我想确保选项对话框只有一个实例(用户无法在给定时间打开多个选项窗口)而不使其成为模式。
此外,如果用户已经打开了此窗口,并且他单击菜单项再次打开它,则应用程序只会使已经可见的表单成为最上面的窗口。
谁能指导我如何完成这些任务?
非常感谢。
嗯,最简单的方法是使用一个静态字段来存储对单个实例或 null 的引用,然后使用一种方法来检索它或创建一个新实例。
请注意,这isn't与使其成为单例相同 - 因为我假设如果表单关闭,您下次会想要创建一个新实例。 (STO 的答案中显示了替代方案 - 隐藏它并重用它。)您可能想要这样的东西:
public class OptionsDialog : Form
{
private static OptionsDialog openForm = null;
// No need for locking - you'll be doing all this on the UI thread...
public static OptionsDialog GetInstance()
{
if (openForm == null)
{
openForm = new OptionsDialog();
openForm.FormClosed += delegate { openForm = null; };
}
return openForm;
}
}
当然,您可能还想让该方法执行“将其置于前面”步骤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)