我正在编写一个应用程序,它使用5个简单窗体的向导式系列。第一种形式NewProfile是从主应用程序MainForm的菜单项打开的,因此是MainForm的子窗体。第二种形式TwoProfile从NewProfile上的按钮打开。第三种形式ThreeProfile是从TwoProfile上的一个按钮打开的,以此类推为所有5种形式。这里是序列: MainForm - > NewProfile < - > TwoProfile < - > ThreeProfile < - > FourProfile < - > FiveProfile。我的问题是,当任何窗体(NewProfile,TwoProfile,ThreeProfile,FourProfile或FiveProfile)打开时,我不希望用户能够创建NewProfile的实例。一次只打开一个子窗体实例c#
我开始实施一个Singleton模式,其中途工作。如果NewProfile打开并且我转到MainForm并尝试创建NewProfile的另一个实例,它将起作用。如果NewProfile已被销毁,则它不起作用,前进到下一个表单并且TwoProfile,ThreeProfile,FourProfile或FiveProfile中的一个已打开。它告诉我NewProfile.IsDisposed是真实的,给我一个对Singleton实例的错误引用。
我无法弄清楚如何做我的逻辑,这样如果TwoProfile,ThreeProfile,FourProfile或FiveProfile中的一个打开,或者NewProfile本身打开,NewProfile将不会被创建。
我希望这是有道理的。我没有太多的代码可以发布,除了我为我的Singleton做的。
private static NewProfile _instance = null;
public static NewProfile Instance
{
get
{
if (_instance == null)
{
_instance = new NewProfile();
}
return _instance
}
}
谢谢:)
你为什么不直接使用含有用户控件,比你一个窗体只需更改Mainform中的用户控件,即可保证只打开“一个”表单并将所有用户控件存储在列表中,并且您可以下载或下载哪个UC按钮,以便加载哪个UC加载 – Venson
您可以简单地隐藏()NewProfile而不是在你打开SecondProfi时销毁它乐? – Steve
你看过做MDI ..吗? – MethodMan