从静态函数访问非静态字段
本文关键字:静态 字段 访问 静态函数 | 更新日期: 2023-09-27 18:18:19
我有两个表单。Form1有一个标签,Form2有一个按钮。我将Form2添加到Form1作为控件。当我点击按钮时,我希望标签更新。
Form1代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
RunTest();
}
private void RunTest()
{
Form myForm2 = new Form2();
myForm2.TopLevel = false;
this.Controls.Add(myForm2);
myForm2.Show();
}
public static void UpdateLabel()
{
label1.Text = "Button Pressed"; //ERROR
}
}
Form2代码:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1.UpdateLabel();
}
}
调用UpdateLabel()要求它是静态的,但是我不能更新Label1。文本
在这种情况下,你有什么建议吗?我想添加更多的Form2到Form1当我得到这个工作在Form2
中添加一个Form1
类型的属性,并与Form1
中的this
赋值。
private void RunTest()
{
Form myForm2 = new Form2();
myForm2.otherform = this; // <--- note this line
myForm2.TopLevel = false;
this.Controls.Add(myForm2); // TODO: why is this line here?
myForm2.Show();
}
然后可以
private void button1_Click(object sender, EventArgs e)
{
otherform.UpdateLabel();
}
如果将UpdateLabel()
设置为非静态
public void UpdateLabel()
{
label1.Text = "Button Pressed";
}