2012-04-04 9 views
2

を更新していますので、過去数時間、別のクラスからフォームのGUIを更新する方法に関するすべてを読んでいます。私は、backgroundworkerとInvokeを試みたが、何も動作していないか、むしろ私はそれを正しくやっていない。 (私はまだかなり新しくC#です)だから、このメソッドは全く機能しませんか?別のクラス

フォーム1:

private void button2_Click_1(object sender, EventArgs e) 
    { 
     prog.stuff(); 
    } 
    public void Updateprogressbar(int input) 
    { 
     progressBar1.Value = input; 

    } 

クラスプログレ

public static void stuff() 
    { 
     Form1 f = new Form1(); 
     int up = 100; 
     f.Updateprogressbar(up); 
    } 

私はこれはおそらく非常に簡単な質問ですけど、私はまだそれを把握することはできません。進行状況バーは更新されません。そして、私はそれをプロパティで一般公開することができます。とにかくありがとう。

答えて

2
private void button2_Click_1(object sender, EventArgs e) 
    { 
     prog.stuff(this); 
    } 
    public void Updateprogressbar(int input) 
    { 
     progressBar1.Value = input; 

    } 


public static void stuff(Form f) 
    { 
     int up = 100; 
     f.Updateprogressbar(up); 
    } 

これは、Form1の新しいインスタンスをインスタンス化するのはstuff()メソッドでのみ有効なので、コードが機能しない理由がわかります。私のコードでは、私はForm1のメソッドへのアクセス権を与えて、Form1のリファレンスをProg.Stuffクラスに渡します。

+0

Omg!ありがとう!トリックをやった!良い説明も...私はダミーのための私のC#をもう少し読む必要があると思う。 – Movieboy

+1

+1 StackOverflowへようこそ。質問がうまく書かれていて、試したことのないサンプルコードがあればうまくいかない場合は、大歓迎です。その本を読んでください。コーディングはArt、Science、Math、Technology(映画制作のようなもの)の融合であり、参考として良い本がなければ、いくつかの事の周りに頭を浮かべるのが難しいかもしれません。 –

関連する問題