gpt4 book ai didi

c# - 使用不同的类更改 form1 中的文本标签

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:35 24 4
gpt4 key购买 nike

按下按钮时更改标签文本有点问题。我的代码看起来像这样。我在这个论坛上搜索了一下,并在 form1 中尝试了这个解决方案,我有这段代码。

public string info
{
get
{
return label11.Text;
}
set
{
label11.Text = value;
}
}

在类里面搜索我有这个

public void fighting()
{
character tom = new character();
Form1 f = new Form1();
Random explore = new Random();
int exploration = explore.Next(0, 3);
if (character.location == "Forest" || character.location == "Dungeon")
{

switch (exploration)
{
case 0:
f.info = "You didnt find anything";
f.Refresh();
f.herodamage = exploration.ToString();
break;
...

按钮有这个

public void button8_Click(object sender, EventArgs e)
{
Search find = new Search();
find.fighting();
}

我做错了什么?每次我按下按钮时,文本不会改变,但它可以工作,因为它确实改变了按钮文本。

最佳答案

战斗方法是创建一个新的 Form1 实例,与您的 UI 不同。

在更新label1.Text时,引用了不同的Form1。

我的建议是重构您的代码,使职责更加明确。

有点像

var info = find.fighting(); // Where fighting returns string, instead of creating new Form1 and setting value, just return the value.
this.info = info;

如果您仍然坚持从搜索方法更新 UI,这不是解决此问题的正确方法,您可以从参数中传递 Form1。

Search find = new Search(this); // Store it as instance of Search class.
find.fighting(); // fighting should never create new instance of Form1 (reason of problem you are facing)

关于c# - 使用不同的类更改 form1 中的文本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42209762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com