2011-10-11 9 views
10

私はC#で書かれたWindowsフォームアプリケーションを持っています。誰かが「クリア」ボタンを押したときにフォームをリロードしたい。しかし、私はロードevent.Theseラインを呼び出すことが達成できなかったにもうまくいきませんでした:閉じると再オープンしないでウィンドウのフォームを再ロード

this.Refresh(); 
    this.Load +=new EventHandler(Grafik_Load); // 'Grafik' is the name of the form. 

は、私はこれについて何をすべき?

+1

Application.Restart()。それは – Burimi

+0

を解決するかもしれませんが、それは、投稿が避けようとしていたものであるちらつき(閉じて、フォームを開く)を表示します。ヌル、ヌル( ます。private void Grafik_Load(オブジェクト送信者、EventArgsの電子) { .... } しかし、私は正しい構文が – Sandy

答えて

5

別の関数に 'load'コードを置き、あなた自身のコード/ロードイベントハンドラからその関数を呼び出してください。

+0

は、実際に私はすでにのようなロード機能を持っています)はうまくいくはずです。 – user741319

+1

Grafik_Loadそれを呼び出すために見つけることができませんでした: – CodingBarfield

0

私は、show部分が同じフォームの別のインスタンスを作成することがわかったので、現在のインスタンスを破棄し、新しいインスタンスを作成して表示してください。

Grafik objFrmGrafik = new Grafik(); 
this.Dispose(); 
objFrmGrafik .Show(); 
0

ホームはMDI-フォーム名です。私はそれをテストしました。

home.ActiveForm.Dispose(); 
      home sd = new home(); 
      sd.Show(); 
4
 private void callonload() 
     { 
      //code which u wrriten on load event 
     } 
     private void Form_Load(object sender, EventArgs e) 
     { 
      callonload(); 
     } 
     private void btn_clear_Click(object sender, EventArgs e) 
     { 
      callonload(); 
     } 
0
//it is a good idea to use the 'sender' object when calling the form load method 
//because doing so will let you determine if the sender was a button click or something else... 

private void button2_Click(object sender, EventArgs e) 
{ 
    //you may want to reset any global variables or any other 
    //housekeeping before calling the form load method 
    Form1_Load(sender, e); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    if (sender is Button) 
    { 
     //the message box will only show if the sender is a button 
     MessageBox.Show("You Clicked a button"); 
    } 
} 
+0

ようこそStackOverflowへ。その中のコードだけの回答は、「低品質」なので削除のフラグが立てられがちです。質問への回答についてのヘルプセクションを読んで、あなたの答えにいくつかの解説を加えることを検討してください。 – Graham

関連する問題