如何回调参数

本文关键字:参数 回调 何回调 | 更新日期: 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实例。根据我的代码片段更改您的代码,它就会起作用。