我在 C#.NET 中有一个简单的标签,似乎没有“更新”。它仅显示我的应用程序的第一个初始值。在下面的代码中,“score”变量不会更新,但是在调用 messagebox.show 对话框时它会显示正确的值。分数值在不同的线程中更改,但我不认为这是调用和跨线程表单控制的问题(因为我在创建 label6 的线程中调用此代码)。
有谁知道可能是什么解决方案?我尝试了 Application.DoEvents() 方法但无济于事。此外, label6.Update() 和 label6.Refresh() 在 label6.Text = score 线之后似乎都不起作用。
Player 是我创建的一个类,将分数值保存为公共 int。
public Form1()
{
InitializeComponent();
createGame();
}
public void createGame()
{
InitializeComponent();
drawThread = new Thread(draw);
MessageBox.Show(player.score);
label6.Text = player.score;
}
public void draw()
{
//do drawing, change player.score value
//end thread
}
public void button_click()
{
if(firstrun)
drawThread.Start()
else{
createGame()
drawThread.Start()
}
}
编辑(来自评论):这是一个 WinForms 应用程序。label6.Text = score 行是调用 label6 的唯一实例,而不是在 Visual Studio 生成的 Form.Designer 代码中实例化。