2017-06-13 21 views
-2

Ich habe Probleme mit mehreren Klassen auf C# zu arbeiten. Ich habe eine Klasse, die einen Wert und ein Verfahren wie diese:C# - Erhalten Sie Wert von einer anderen Klasse

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

    Class1() 
    { 

    } 

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

Und ich brauche zweimal Wert aus dieser Klasse zwei Form erhalten: die erste Form eine Schaltfläche hat die Variable class1 die aktivieren

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() 
    } 
} 

Das Problem passieren, wenn ich einen anderen Form2 schaffen, in dem der Wert von class1 auf einem Etikett nehmen:

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

Der Text des Etiketts nicht erhöht hat, wie ich wollte. Ich habe sogar überprüft, indem ich ein ähnliches Label auf Form1 erstellt habe und es funktioniert gut. Bitte helfen Sie mir, dass es auf Form2 funktioniert, Danke!

+3

In dem von Ihnen geposteten Code erstellen Sie bei jedem Klick auf eine Schaltfläche eine neue Instanz von 'Class1'. Der Zeitgeber wird daher auf 0 gesetzt und dann jedes Mal auf 1 erhöht. –

+1

* "Der Text des Labels ist nicht so groß geworden, wie ich es wollte" * Was wollten Sie haben? Was war es? –

+0

Haben Sie überprüft, dass der form2_load-Code ausgeführt wird? – Scrobi

Antwort

1

Im Code Sie auf dem Laufenden, Sie erstellen auf jeder Schaltfläche, um eine neue Instanz von Class1, so dass der Timer auf gesetzt und erhöht dann jedes Mal .

Wenn Sie den gleichen Zähler bei jedem Klick auf die Schaltfläche erhöhen möchten, können Sie die Zeile Class1 a = new Class1(); außerhalb der OnButtonBtn_Click-Methode platzieren.

Es gibt einige andere Probleme mit diesem Code, aber sie sind nicht im Bereich dieser Frage. Ich nehme an, es ist ein Testcode, kein aktuelles Programm.

Verwandte Themen