刷新之前调用的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
如何刷新或做其他事情?
这取决于您在哪里创建了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;