2016-04-20 8 views
1

Ich habe den CodeWie die Hintergrundfarbe eines Etiketts in einem separaten Formular C# setzen

  Results toResults = new Results(); 
      correct = 0; 
      incorrect = 0; 
      //Indicates clearly which answers are correct 
      if (userGuessArray[0]==decompTimeArray[0]) 
      { 
       toResults.yourAnswerLabel1.BackColor = Color.Green; 
       lblone.BackColor = Color.Green; 
       correct++; 
      } 
      else 
      { 
       toResults.yourAnswerLabel1.BackColor = Color.Red; 
       lblone.BackColor = Color.Red; 
       incorrect++; 
      } 

Es scheint nicht für die Einstellung der Hintergrundfarbe des Etiketts auf der zweiten Form zu arbeiten. Ich habe es die Farbe auf sich selbst gesetzt und das funktioniert, aber es wird einfach nicht in die andere Form gehen. Wie kann ich das beheben?

Ich habe zwar viele Lösungen gesucht, aber keine gefunden.

Hier ist der Code, der es tatsächlich zeigt.

private void ShowResults() 
     { 
      //Shows the Results form. 
      toResults.Show(); 
     } 



private void resultsButton_Click(object sender, EventArgs e) 
     { 

      ShowResults(); 

     } 
+0

Wir wissen nicht wirklich, was Sie mit "Ihre zweite Form" meinen. Vielleicht ist die zweite Form noch nicht fertig initialisiert? – noelicus

+1

Weil Sie eine NEUE Instanz des Formulars Ergebnisse erstellen. Diese Instanz wird nie angezeigt und Sie können ihre Beschriftungen nicht sehen. Wenn Sie toResults.Show() aufrufen, sehen Sie die Auswirkungen Ihrer Änderungen. Aber ich wette, dass das hier nicht erwartet wird, oder? Sie sollten diese Änderungen auf die Instanz des Ergebnisformulars anwenden, die bereits angezeigt wird. – Steve

+1

Sie sagen * diese Form * und * diese andere Form *, aber ich sehe keine in Ihrem Code. Worüber redest du? Kannst du mehr Code posten und erklären, was hier vor sich geht? – pid

Antwort

1

In Ihrem zweiten Formular erstellen Sie eine Eigenschaft, die diese Werte für Sie festlegen wird.

Zweite Form:

public Color _labelBackColor 
{ 
    get { return myLabel.BackColor; } 
    set { myLabel.BackColor = value; } 
} 

Sie können dann den Wert von

toResults._labelBackColor = Color.Green; 

oder durch Einstellung Aufruf ändern, wenn Sie das zweite Formular

var toResults = new Results { _labelBackColor = Color.Green }; 
+0

Ich änderte, was ich tat, basierend auf dem, was jemand anderes sagte und es funktionierte. Danke für deinen Beitrag. – pkp23

1

Da diese instanziiert ist die Windows Formularanwendung verwenden Statische Variable.

Erstellen Sie statische Variable in Ihrem Hauptformular und behalten Sie das, um Ihre Farbe für das Formular zu verwalten.

Lesen Sie immer die Farbe aus dieser statischen Variable, um sie anzuwenden, wo Sie möchten.

Verwandte Themen