从另一个类文件访问MainForm
本文关键字:访问 MainForm 文件 另一个 | 更新日期: 2023-09-27 18:29:56
我有这个MainForm类:
namespace homework_001{
public partial class MainForm : Form
{
public MainForm()
{InitializeComponent();}
public string Change
{
get{ return label.Text;}
set{ label.Text = value;}
}
void ButtonClick(object sender, EventArgs e)
{
Test a = new Test();
a.changer();
}
}}
我有这样的课:
namespace homework_001{
public class Test
{
private MainForm form = new MainForm ();
public void changer(){
form.Change = "qqqqq!";
}
}}
所需的工作流程是更改按下按钮时的标签/文本。它编译了,但在我按下按钮后什么也没发生。
可能是什么问题?
所显示的表单与类Test
中的表单不同。
为了使事情正常工作,您应该通过以下方式将表单传递给类Test
:
public class Test
{
private MainForm form;
public Test(MainForm f)
{
this.form=f;
}
public void changer(){
form.Change = "qqqqq!";
}
}}
在你的主要形式中,你这样做:
public partial class MainForm : Form
{
public MainForm()
{InitializeComponent();}
public string Change
{
get{ return label.Text;}
set{ label.Text = value;}
}
void ButtonClick(object sender, EventArgs e)
{
Test a = new Test(this);
a.changer();
}
}}
创建了一个主窗体的新对象。使字符串Change public and static
并将其从类似Mainform.Change="some text";
的测试类更改为
您正在创建另一个MainForm
对象,与屏幕上实际显示的对象不同。要处理同一个对象,需要将其传递给Test
类,如下所示:
Test a = new Test(this); // "this" is the MainForm object you want to work with
a.changer();
这将为Test
类提供对MainForm
对象的引用。
现在,您需要在Test
中创建一个带有一个参数的构造函数,并将接收到的对表单对象的引用存储在Test
的private MainForm form
字段中。你做那件事不应该有任何麻烦。
更改以下代码:
void ButtonClick(object sender, EventArgs e)
{
Test a = new Test();
a.changer(ref this);
}
您通过引用将表单对象传递给函数,并更改
public class Test
{
public void changer(ref MainForm form){
form.Change = "qqqqq!";
}
}
请参阅此链接传递参考类型参数(C#编程指南)