有多种方法可以实现,我现在就给你说三种:1、如果你的主窗口是MdiContainer,新窗口是MdiChildren,假设所属的类为frmOilInfo:
foreach (Form frm in this.MdiChildren)
{
if (frm is frmOilInfo)
{
frm.Activate();
return;
}
}frmOilInfo dlgOilInfo=new frmOilInfo();
dlgOilInfo.MdiParent=this;
dlgOilInfo.Show(); 2、如果不是MDI,用FindWindow或FindWindowEx来实现。3、在新窗口所属的类中定义一个静态变量,用以存储窗体打开的状态,每一次点打开窗口时,判断一下,如果窗体存在,acitve().,如果不存在show()
foreach (Form frm in this.MdiChildren)
{
if (frm is frmOilInfo)
{
frm.Activate();
return;
}
}frmOilInfo dlgOilInfo=new frmOilInfo();
dlgOilInfo.MdiParent=this;
dlgOilInfo.Show(); 2、如果不是MDI,用FindWindow或FindWindowEx来实现。3、在新窗口所属的类中定义一个静态变量,用以存储窗体打开的状态,每一次点打开窗口时,判断一下,如果窗体存在,acitve().,如果不存在show()
能否把第三中详细说说
public static bool isOpened=false;在你要打开Form6的地方写
Form6 frm=new Form6();if (!Form6.isOpened)
{
frm.Show();
Form6.isOpened=true;
}
在click中添加以下代码
if frmDisp is nothing then
frmdisp = new frmMain()
end if
frmdisp.show()
这种方法不错,可是C#里怎么写(frmDisp is nothing)怎么改呢!
在click中添加以下代码
if frmDisp is nothing then
frmdisp = new frmMain()
end if
frmdisp.show()
这种方法不错,可是C#里怎么写(frmDisp is nothing)怎么改呢!>>>>>>>>>>>>>>>>>>>>>>>>>
将frmDisp放在类中声明,不要在按钮事件中声明
frmMain frDisp=null;
在click中添加以下代码
if frmDisp == null
frmdisp = new frmMain();
frmdisp.show();
我已经测试过,不过好象在Mdi模式下打开子窗体,不能实现功能。。
能否有其他方式
To:HellMaster(李晋)
第一种方法可以在mdi模式下打开子窗体,第三种没有测试过,是否能行的通。给我答案就ok...
我已经测试过,不过好象在Mdi模式下打开子窗体,不能实现功能。。怎么可能???这段代码跟是否是Mdi毫无关系!
我也测试过了,不是测试,我是经常使用,都没有发现任何问题呀!贴上你的代码,我要看个究竟!!
打开是能打开,但是子窗体跑出母窗体的外面来啦。
附代码如下:
public static FrmFileTrans ft=null;
private void menuItem6_Click(object sender, System.EventArgs e)
{
if(ft==null)
{
ft=new FrmFileTrans();
}
ft.Show();
}
fr.MdiParent=你的父窗体;
加前面也行看看现在行了吗??
怪事情,怎么后来出现无法访问"FrmFileTrans"的已处置对象。
应用程序发生没处理的异常,
到底那里出错。我的操作是,先打开,后关闭,然后打开,就出错啦。
问题出在那里
frm2=new Form2();
frm2.MdiParent=this;
frm2.Show();这样应该没有问题了吧!