刷新之前调用的class属性

本文关键字:class 属性 调用 刷新 | 更新日期: 2023-09-27 18:07:14

比如说,我在我的主窗体中调用了一个类,比如

BSPclass bsp = new BSPclass();

这个类中有一个属性,比如

class BSPclass 
{ 
    public string p1 = "player1";
}

然后,如果我点击mainform中的一个按钮,将出现一个新表单(如form2),例如,有一个文本框将为p1设置一个值(在form2中也调用了BSPclass)

private void save_Click(object sender, EventArgs e) 
{ 
    BSP.p1 = txtbox.text;
}

现在,问题是,如果我关闭form2,它不会在mainform中显示p1的新值,仍然显示player1

如何刷新或做其他事情?

刷新之前调用的class属性

这取决于您在哪里创建了BSP实例?如果它是在form2中创建的,那么它也可以与表单一起处理。这两个例子在这里是不同的。你必须使用委托将它传递给主表单,比如:

假设你的主窗体有一个BSPclass的实例,如BSPclass bsp = new BSPclass();

在你的form2声明一个委托像

public delegate void passinfotomainform(string data);

创建委托类型的事件

public event passinfotomainform datapassevent;

然后在按钮中单击引发事件

private void save_Click(object sender, EventArgs e) 
{ 
BSP.p1 = txtbox.text;
if(datapassevent != null)
 datapassevent(txtbox.text);
}

在主表单中,将此事件注册为

form2.datapassevent += new EventHandler(myhandler);

myhandler中获取数据

private void myhandler(string arg)
{
  bsp.p1 = arg; //set the bsp in main form
}

您可以简单地将textbox的值传递给mainform然后刷新p1。您不应该在form2中创建BSPClass的实例。参见下面的代码:

在form2:

public string pTemp;
private void save_Click(object sender, EventArgs e) 
{ 
    pTemp = txtbox.text;
}
在mainform:

BSPclass bsp = new BSPclass();
Form2 f=new Form2();
f.ShowDialog(this);
bsp.p=f.pTemp;