2017-06-13 14 views
-2

C#で複数のクラスを扱う際に問題があります。私は、値と、このようなメソッドを持っているクラスがあります。C# - 別のクラスから値を取得

Class class1 
{ 
    int curValue = 0; 
    Public int curValue 
    { 
     get {return curValue; } set{curValue = value; } 
    } 

    Class1() 
    { 

    } 

    public void Work() 
    { 
     while(//condition) 
      curValue++; 
     //some other code 
    } 
} 

と私は2回、2つのフォームに、このクラスから値を取得する必要があります。 最初の形式は、クラス1の変数

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    OnButtonBtn_Click(Object sender, EventArgs e) 
    { 
     Class1 a = new Class1(); 
     a.Work(); 
     Form2 form2 = new Form2(a); 
     form2.show() 
    } 
} 
を活性化させるボタンがあります私が望んでいたよう

public partial class Form2 : Form 
    { 
     Class1 b; 
     public Form2(Class1 input) 
     { 
      b = input; 
      InitializeComponent(); 
     } 
     private void Form2_Load(object sender, System.EventArgs e) 
     { 
      lb.Text = b.curValue; 
     } 
    } 

ラベルのテキストが増加していない:私はラベルにクラス1の値を取る別のForm2を作成するときに

は問題が起こります。 Form1で同様のラベルを作成してチェックしてもうまくいきます。私はそれがForm2で動作するように助けてください、ありがとう!コードで

+3

あなたが投稿したコードでは、各ボタンクリックで新しいクラスインスタンス「Class1」を作成します。そのため、タイマーは0に設定され、毎回1に増加します。 –

+1

* "私の望むように、ラベルのテキストが増加していない" *あなたは何をしたかったのですか?それが何だった? –

+0

form2_loadコードが実行されていることを確認しましたか? – Scrobi

答えて

1

あなたはタイマーがに設定してからにするたびに増加されるようにするには、各ボタンのクリックでClass1の新しいインスタンスを作成し、掲載しました。

各ボタンの同じカウンタを増やしたい場合は、Class1 a = new Class1();OnButtonBtn_Clickメソッドの外に置くことができます。

このコードには他にもいくつか問題がありますが、この質問の範囲には含まれていません。実際のプログラムではなく、テストコードだと思います。

関連する問題