Ich weiß, das ist wahrscheinlich eine sehr neue Frage, also entschuldige ich mich.Eine Objektreferenz ist für das nicht statische Feld, die Methode oder die Eigenschaft erforderlich?
Ich versuche, die Text -Eigenschaft eines Etiketts auf Form1 von einem anderen Formular, MaxScore zuzugreifen.
Wenn ich auf die OK-Schaltfläche auf MaxScore klicke, möchte ich Form1's myGameCountLbl.Text auf Form1's Variable, max setzen, indem ich max.ToString() benutze.
Hier ist mein Code in der OK-Taste Ereignis von MaxScore:
private void okBtn_Click(object sender, EventArgs e)
{
Form1.myGameCountLbl.Text = Form1.max.ToString();
Form1.compGameCountLbl.Text = Form1.max.ToString();
}
Aber wenn ich es kompilieren zu gehen, ich den Fehler:
An object reference is required for the non-static field, method, or property 'Towergame_2.Form1.myGameCountLbl'
ich den gleichen Fehler für Towergame_2 .Form1.max und Towergame_2.Form1.compGameCountLbl.
Nicht ganz sicher, wie das zu beheben ist. Max ist eine öffentliche Variable und die beiden Labels sind ebenfalls öffentlich.
Danke!
Dies ist der Code in meinem Konstruktor (danke für den Code lassevk!):
public Form1()
{
//initialize vars
myHp = 100;
compHp = 100;
youWon = 0;
compWon = 0;
money = 100;
canCompAttack = true;
gameOver = false;
//show HowToPlay Dialogue
HowToPlay howToPlay = new HowToPlay();
howToPlay.ShowDialog();
using (MaxScore maxScore = new MaxScore())
{
maxScore.MainForm = this;
maxScore.ShowDialog();
}
InitializeComponent();
}
Wenn ich all dies hinzufügen und zu kompilieren und zu starten, drücken Sie OK auf der MaxScore-Taste, ich bekomme eine Ausnahme unter: MainForm.myGameCountLbl.Text = MainForm.max.ToString(); sagen: NullReferenceException wurde nicht behandelt. Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt. – Eric
Hast du eigentlich MainForm gesetzt, wie ich es im letzten Code dort gezeigt habe? –
Ja, tat ich. Ich habe den letzten Code in meinem Form1-Konstruktor. – Eric