再送高分-Windows Form重新调用刷新的问题 你就把第二个form直接付给win不久可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在第一个窗口中定义Window2 win = new Window2(),调用win.show()显示Window2 需要刷新的时候,仍然调用win.show(),就可以了,并不会增加新的窗口 参考这个问题,已经解决:如何在MDI中只创建一个子窗口(就是一个窗体只能创建一个实例_),当一个子窗口已存在的话,只是激活它!http://expert.csdn.net/Expert/TopicView3.asp?id=830880 上面的贴子里说得很清楚,真佩服班门斧,还记着贴子的URL. 我觉得版主提的帖子中CForce说的方法是比较正宗的,一些名家手笔也这样来使用静态变量。具体代码如下:修改子窗体的构造函数和Dispose函数public class Form2 : System.Windows.Forms.Form{public static int nInstance=0;//静态变量,表示目前打开的Form2的数量public Form2(){Form2.nInstance++;//改动InitializeComponent();}protected override void Dispose( bool disposing ){if( disposing ){if(components != null){components.Dispose();}}base.Dispose( disposing );Form2.nInstance--;//改动}}在主窗体中的代码:private void newForm2(){if (Form2.nInstance<=0){Form2 frm=new Form2();frm.MdiParent=this;frm.Show();}else{foreach (Form frm in this.MdiChildren){ if (frm.GetType()==typeof(Form2)){frm.Show(); frm.BringToFront();}}}} 采用singleton设计模式不就都搞定了吗? 看了dy_2000_abc(芝麻开门)开门的帖子,深有感触啊.想起了一句广告,没有最好,只有更好.(不敢说下面的解决办法是更好,CForce从名字上看就是那种杀伤力极强). 只是想了一个新办法,大家试一试.优点:简单,实用.使用面广.缺点,大家帮着看看,如果可行以后就用这个回答问题了. :)思路是这样,判断MDI Parent的MdiChildren,看看是否已经有这个实例了.代码如下,假设我们想打开一个Form2,这段代码是在MDI Parent Form中:foreach(Form f in this.MdiChildren){ if (f.GetType() == typeof(Form2)) f.Show(); return;} Form2 f2 = new Form2(); f2.MdiParent = this; f2.Show(); 在主窗体中:Form2 form2=null;在创建子窗体时:if(form2!=null){form2.close();form2=null;}form2=new Form2();我发现用for2.dispose后还能调用form2的属性值;用上面这个方法比较保险,我觉得. 新手问题啊..想在form2里加了一个trackBar,想调节form1里面的字体大小.. C#发UDP包判断机器是已经断开连接 C# 类型转换 疑惑 懂使用SharpZipLib制作压缩文件的高手帮帮我 求助 各位大侠帮帮忙啊 TreeView如何收缩全部节点! 用Graphics绘制文字时,如何设置字体的宽、高比(解决问题立即给分) 简单入门级的问题(关于C#) 12选五 如何判断一个路径是否合法 OOP中永久化类如何实现 怎么使用.net编写出可以使用server.creatobject方法的控件库
调用win.show()显示Window2 需要刷新的时候,仍然调用win.show(),就可以了,并不会增加新的窗口
http://expert.csdn.net/Expert/TopicView3.asp?id=830880
具体代码如下:
修改子窗体的构造函数和Dispose函数
public class Form2 : System.Windows.Forms.Form
{
public static int nInstance=0;//静态变量,表示目前打开的Form2的数量
public Form2()
{
Form2.nInstance++;//改动
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
Form2.nInstance--;//改动
}
}在主窗体中的代码:
private void newForm2()
{
if (Form2.nInstance<=0)
{
Form2 frm=new Form2();
frm.MdiParent=this;
frm.Show();
}
else
{
foreach (Form frm in this.MdiChildren)
{
if (frm.GetType()==typeof(Form2))
{
frm.Show();
frm.BringToFront();
}
}
}
}
优点:简单,实用.使用面广.
缺点,大家帮着看看,如果可行以后就用这个回答问题了. :)思路是这样,判断MDI Parent的MdiChildren,看看是否已经有这个实例了.
代码如下,假设我们想打开一个Form2,这段代码是在MDI Parent Form中:foreach(Form f in this.MdiChildren)
{
if (f.GetType() == typeof(Form2)) f.Show();
return;
} Form2 f2 = new Form2();
f2.MdiParent = this;
f2.Show();
Form2 form2=null;在创建子窗体时:
if(form2!=null)
{
form2.close();
form2=null;
}
form2=new Form2();我发现用for2.dispose后还能调用form2的属性值;
用上面这个方法比较保险,我觉得.