RT
不要MDI,网上一大把这样的例子。那个IsMdiContainer设置true以后主窗体的背景就会变为灰色,不好看。
我要的是正常的窗体,可以调用一个子窗体,也不是showdialog这个啦。
无论子窗体关闭与否,只存在一个。主窗体一调用它,他就显示出来。
C# 调用子窗体 只显示一个子窗体
答案:3 悬赏:0
解决时间 2021-02-26 17:31
- 提问者网友:浪荡羁士
- 2021-02-25 22:28
最佳答案
- 二级知识专家网友:厭世為王
- 2021-02-25 23:33
单例模式即可解决。
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()咯...
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()咯...
全部回答
- 1楼网友:魅世女王
- 2021-02-26 01:47
1、在加载新的子窗体时,可以使用控件的bringtofront()这个方法将它显示到最顶层;
2、你的子窗体是显示到panel控件中的,那么加载一个新的子窗体的时候,先使用panel.controls.clear()移除它的所有子控件(即之前你加载的子窗体)就可以了,注意这是将它的子控件全部移除,如果还有别的子控件,那么可以使用panel.controls.remove()或者panel.controls.removeat()来移除你指定的控件;
希望对你有帮助,还有疑问请追问或是hi
- 2楼网友:心痛成瘾
- 2021-02-26 00:44
只存在一个子窗体的话,可以用代码实现啊,具体怎么实现自己搞,还有MDI窗体背景色也可以调啊,甚至可以换成背景图片啊,怎么会只是灰色呢????
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯