※ 引述《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)