如何回调参数
本文关键字:参数 回调 何回调 | 更新日期: 2023-09-27 18:08:17
我想从class1
设置textbox.text
,但当我按下按钮时,什么都没有发生。怎么了?
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Class1 c;
private void button1_Click(object sender, EventArgs e)
{
c = new Class1();
c.x();
}
}
}
这个代码来自class1
namespace WindowsFormsApplication1
{
class Class1
{
public static Form1 f;
public void x()
{
f = new Form1();
f.textBox1.Text = "hello";
}
}
}
我已经将textBox1
修饰符更改为public。
当您执行f = new Form1()
时,您将创建一个新表单。如果您已经打开了Form1
的一个实例,那么这将为您提供两个Form1
的实例。对其中一个调用方法不会影响另一个。您必须将表单的引用传递给Class1
的实例,并在该引用上调用方法。
有不同的方法可以做到这一点。可以将引用作为参数传递给x
方法:
public void x(Form1 f)
{
f.textBox1.Text = "hello";
}
当您调用x
时,您可以向它传递特殊变量this
,它是代码所关联的对象。这将把Form1
的实例传递给x
,以便x
可以使用它
c.x(this);
private void button1_Click(object sender, EventArgs e)
{
c = new Class1(this);
c.x();
}
class Class1
{
public static Form1 f;
public Class1(Form1 form)
{
f = form;
}
public void x()
{
f.textBox1.Text = "hello";
}
}
问题是您在x方法中创建了一个新的Form1实例。根据我的代码片段更改您的代码,它就会起作用。