【发布时间】:2021-11-29 15:11:46
【问题描述】:
我正在尝试在我正在编写的游戏中实现 GameStateManager。
在我的主表单中,我有一个标签,我试图从某个游戏状态中更改其文本。
因为我不想将标签更改为公开,这是不好的做法,所以我做了以下操作:
public void ChangeScoreLabel(string text)
{
this.lblScore.Text = text;
}
我使用以下代码将主窗体传递给我的班级:
gameStateManager.Add("game", new CStateGame(gameStateManager, this));
在构造函数中的游戏类中,我将其传递给:
public CStateGame(CStateManager gameStateManager, Form form)
{
m_gameStateManager = gameStateManager;
m_form = form;
}
现在这不起作用:
m_form.ChangeScoreLabel("Score : " + iScore.ToString());
我错过了什么?
【问题讨论】:
-
使用
as将父级Form转换为您的真实Form1(或您如何称呼它):(m_form as Form1).ChangeScoreLabel("Score : " + iScore.ToString());
标签: c# forms class label public