2017-06-13 37 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 
    } 
} 

,我需要兩次獲得價值從這個類兩種形式: 第一種形式有一個按鈕,激活的Class1的變量

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; 
     } 
    } 

標籤的文本並沒有增加:

的問題,當我創建另一個窗體2從哪裏拿的Class1價值的標籤發生。我甚至通過在Form1上創建一個類似的標籤進行檢查,並且它工作正常。請幫助我在Form2上工作,謝謝!

+3

在您發佈的代碼中,您在每次點擊按鈕時創建一個'Class1'的新實例,因此計時器設置爲0,然後每次都增加到1。 –

+1

*「標籤的文字沒有增加,因爲我想要」*你想要它是什麼?它以前如何? –

+0

你檢查了form2_load代碼是否正在執行? – Scrobi

回答

1

在你的代碼貼出來,你創建的Class1每個按鈕上點擊一個新的實例,所以計時器設置爲0 然後增加至每次。

如果您想要增加每個按鈕單擊的相同計數器,您可以將Class1 a = new Class1();行放在OnButtonBtn_Click方法之外。

該代碼還存在其他一些問題,但它們不在此問題的範圍內。我想這是一個測試代碼,而不是一個實際的程序。