C# 调用子窗体 只显示一个子窗体
RT不要MDI,网上一大把这样的例子。那个IsMdiContainer设置true以后主窗体的背景就会变为灰色,不好看。我要的是正常的窗体,可以调用一个子窗体,也不是sh...
RT
不要MDI,网上一大把这样的例子。那个IsMdiContainer设置true以后主窗体的背景就会变为灰色,不好看。
我要的是正常的窗体,可以调用一个子窗体,也不是showdialog这个啦。
无论子窗体关闭与否,只存在一个。主窗体一调用它,他就显示出来。 展开
不要MDI,网上一大把这样的例子。那个IsMdiContainer设置true以后主窗体的背景就会变为灰色,不好看。
我要的是正常的窗体,可以调用一个子窗体,也不是showdialog这个啦。
无论子窗体关闭与否,只存在一个。主窗体一调用它,他就显示出来。 展开
展开全部
单例模式即可解决。
1.在子窗体写一个静态变量
public static Form1 f1;//(假设子窗体是Form1)
2.在子窗体写一个静态方法,返回一个Form1
public static Form1 GetSingleInstance()
{
if(f1==null)
{
f1=new Form1();
}
return f1;
}
之后在显示子窗体时不要再用new了,即不要Form1 f1=new Form1();这样写,而应该:
Form1 f1=Form1.GetSingleInstance();
这样就实现了只存在一个子窗体,那么要让子窗体显示就直接f1.Show()咯...
更多追问追答
追问
这样写,貌似关闭了子窗体后,再打开就会报错。
未处理System.ObjectDisposedException
HResult=-2146232798
Message=无法访问已释放的对象。
对象名:“Form1”。
追答
在Form1那加个重写即可:
protected override void Dispose(bool disposing)
{
base.Hide();
}
展开全部
那你直接主窗体hide(),子窗体show()不就行了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询