作者jack810606 (Damn it!)
看板C_Sharp
标题Re: [问题] 从头开始run form
时间Wed Sep 16 09:11:52 2009
※ 引述《leo600498 (我爱大胸部)》之铭言:
: ※ 引述《leo600498 (我爱大胸部)》之铭言:
: : 大家好,
: : 小弟是初学者,
: : 最近在写简单的form时碰到了一个问题,
: : 就是我写了一个pictureBox1_Click的事件,
: : 让user只要点一下画面就会从头开始run这个form,
: : 但是完全没有头绪要怎麽做@@
: : 是refresh吗?
: : 还是该用timer?
: 我後来在form 1的 click event里写了下面的程式码:
: Form1 form2 = new Form1();
: form2.Visible = true;
: this.Close();
: 本来的用意是想要重开一个新的form之後,
: 把原来的form关掉,
: 但是这样写的话,
: 就会把所有的from都关掉了。
: 请问一下大家,
: 这样的写法就是重新run这个form吗?
: 那有没有方法可以在开启新的form的同时关掉from1?
: 谢谢大家。
你在程式原本秀出的form1建立的form2是属於form1的子物件
而form1是你程式执行绪的最基底的form如果你把它关闭
当然会把子物件跟整个程式都关闭
Form.Close();请参考MSDN 他是把物件记忆体释放
所以连带子物件form2也会关闭
如果要达到你想要的效果可以试试看this.Hide();
不过这个方法不好 因为这样原本你用不到的form1记忆体还是会占用
你可以试试看Application.Restart();
或是修改专案的程式进入点建立一个form3作为执行绪的启始Form
在form1建立一个全域变数 public Form3 form; (宣告就好不要建构)
接着把Click事件改成 form.ReStart();this.Close();
然後form3的建构式当中加入
public form3()
{
this.hide();
ReStart();
}
form3加入一个方法
public void ReStart()
{
Form1 form1 = new Form1();
form1.form = this;
form1.Show();
}
※ 编辑: jack810606 来自: 61.228.74.45 (09/16 09:24)