Tôi biết đây có lẽ là một câu hỏi rất mới mẻ, vì vậy tôi xin lỗi.Một tham chiếu đối tượng là bắt buộc đối với trường, phương thức hoặc thuộc tính không tĩnh?
Tôi đang cố truy cập thuộc tính Văn bản của nhãn trên Form1 từ một biểu mẫu khác, MaxScore.
Khi tôi nhấp vào nút Ok trên MaxScore, tôi muốn đặt MyGameCountLbl.Text của Form1 thành biến Form1, tối đa bằng cách sử dụng max.ToString().
Đây là mã của tôi trong trường hợp nút OK của MaxScore:
private void okBtn_Click(object sender, EventArgs e)
{
Form1.myGameCountLbl.Text = Form1.max.ToString();
Form1.compGameCountLbl.Text = Form1.max.ToString();
}
Nhưng khi tôi đi để biên dịch nó, tôi nhận được lỗi:
An object reference is required for the non-static field, method, or property 'Towergame_2.Form1.myGameCountLbl'
tôi nhận được lỗi tương tự cho Towergame_2 .Form1.max và Towergame_2.Form1.compGameCountLbl.
Không chắc chắn cách khắc phục điều này. Max là một biến công cộng và hai nhãn là pubic là tốt.
Cảm ơn!
Đây là mã trong constructor của tôi (cảm ơn bạn lassevk cho mã!):
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();
}
Khi tôi thêm tất cả điều này và cố gắng biên dịch và chạy, bấm ok trên nút MaxScore, tôi nhận được một ngoại lệ tại: MainForm.myGameCountLbl.Text = MainForm.max.ToString(); nói: NullReferenceException đã bị hủy. Tham chiếu đối tượng không được đặt thành một thể hiện của đối tượng. – Eric
Bạn có thực sự thiết lập MainForm, như tôi đã giới thiệu trong đoạn mã cuối cùng ở đó không? –
Vâng tôi đã làm. Tôi có đoạn mã cuối cùng trong hàm tạo Form1 của mình. – Eric