C# 调用子窗体 只显示一个子窗体

RT不要MDI,网上一大把这样的例子。那个IsMdiContainer设置true以后主窗体的背景就会变为灰色,不好看。我要的是正常的窗体,可以调用一个子窗体,也不是sh... RT

不要MDI,网上一大把这样的例子。那个IsMdiContainer设置true以后主窗体的背景就会变为灰色,不好看。

我要的是正常的窗体,可以调用一个子窗体,也不是showdialog这个啦。

无论子窗体关闭与否,只存在一个。主窗体一调用它,他就显示出来。
展开
 我来答
llyn23
推荐于2016-01-22 · TA获得超过5142个赞
知道大有可为答主
回答量:1831
采纳率:50%
帮助的人:1842万
展开全部

单例模式即可解决。


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();
}
妖妖灵文学
2013-08-26
知道答主
回答量:57
采纳率:0%
帮助的人:24.3万
展开全部
只存在一个子窗体的话,可以用代码实现啊,具体怎么实现自己搞,还有MDI窗体背景色也可以调啊,甚至可以换成背景图片啊,怎么会只是灰色呢????
更多追问追答
追问
MDI背景颜色可以调》?我试试

貌似不行吧。。。修改背景色没用
追答

哦,对不起,记错了,看了下的确不可以,但是我当年是用投机取巧的方式弄的,弄个容器控件Dock属性设置为fill弄个背景色,或者弄张图片也行!

附一张我原来做的....

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b0c2396
2013-08-26 · TA获得超过123个赞
知道小有建树答主
回答量:160
采纳率:100%
帮助的人:141万
展开全部
那你直接主窗体hide(),子窗体show()不就行了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式