在Form1窗体button事件中代码:private void button1_Click(object sender, System.EventArgs e)
{ if(form==null)//事先已经先定义好Form2 form;
form=new Form2();
form.Show();
}
在Form2窗体button事件中代码:this.close();
目的是为了实现点击Form1中的button弹出Form2窗体,而且无论点击多少次,始终只有1个Form2窗体,然后关闭Form2窗体以后再次点Form1窗体中的button功能依旧如上。现在我写的代码碰到个问题就是关闭了Form2窗体后再次点击Form1的button就报错,好像是因为关闭了Form2窗体但form这个实例并没有在内存中释放的原因。
后来改了下代码,在Form2中的默认构造函数里面加入代码Tag=0;button事件中加入代码Tag=1;然后吧Form1上面的if语句改成if(form==null||(int)form.Tag==1)这样功能就能实现了,可这样是在重复生成Form2窗体的实例,Form2窗体上其他变量也都没有在内存中释放,不知道长时间运行是否会发生内存泄漏的问题?各位麻烦看看,看有更好的方法解决不?最好能贴代码上来。多谢了!!!
{ if(form==null)//事先已经先定义好Form2 form;
form=new Form2();
form.Show();
}
在Form2窗体button事件中代码:this.close();
目的是为了实现点击Form1中的button弹出Form2窗体,而且无论点击多少次,始终只有1个Form2窗体,然后关闭Form2窗体以后再次点Form1窗体中的button功能依旧如上。现在我写的代码碰到个问题就是关闭了Form2窗体后再次点击Form1的button就报错,好像是因为关闭了Form2窗体但form这个实例并没有在内存中释放的原因。
后来改了下代码,在Form2中的默认构造函数里面加入代码Tag=0;button事件中加入代码Tag=1;然后吧Form1上面的if语句改成if(form==null||(int)form.Tag==1)这样功能就能实现了,可这样是在重复生成Form2窗体的实例,Form2窗体上其他变量也都没有在内存中释放,不知道长时间运行是否会发生内存泄漏的问题?各位麻烦看看,看有更好的方法解决不?最好能贴代码上来。多谢了!!!
解决方案 »
- WPF如何在style中添加trigger?改变圆形按钮的背景色
- panel无法将顶级控件添加到控件?
- ORA-12571 高手请进
- @字符串 如何使用Substring函数
- 水晶报表:无法找到清单资源中的报告.请创建项目并再次尝试 !
- 【求助】DynamicILInfo.SetExceptions 方法 (Byte[])
- 数据库更新问题!
- 菜鸟问题:谁能告诉我C#里面的一些系统函数吗?最好能全一点的。谢谢了!
- 请推荐一本c#的教程和vc#的书
- mvc5数据库链接mysql8.0.13连不了吗?
- 将一个运行在sqlserver下的语句转换为能在oracle下运行的问题!!!急~~~~~~~
- 如何读取数据库的内容
2.0好象想找一个内存泄露的代码很难(至少我现在没找到)
Form的Closed或FormClosed事件是一个非常重要的事件(两个事件区别在于支持的分别是1.x和2.x)
对于你这个应用,必须处理这两个事件,这个事件的重要性不亚于Dispose方法
我理解的意思是:点击Form1的button显示Form2,点击Form2的button关闭Form2.再点击Form1的button显示Form2,点击Form2的button关闭Form2。依次类推。不知道楼主是否是这个意思如果是的话,form1的button这样写就可以了
Form2 f2 = null;
private void button1_Click(object sender, System.EventArgs e)
{
if(f2!=null)
{
if(!f2.Created)
{
f2=new Form2();
f2.Show();
}
}
else
{
f2=new Form2();
f2.Show();
}
}
___________________________________________
楼主的需求.为什么要clocse()?
隐藏不就行了嘛...再点的时候就显示出来不好莫?
最后再次感谢各位!!!