如何回拨参数?

时间:2013-04-09 09:13:25

标签: c# class parameters

我想从textbox.text设置class1,但是当我按下按钮时没有任何反应。怎么了?

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修饰符更改为公开。

2 个答案:

答案 0 :(得分:3)

执行f = new Form1()时,您需要创建一个新表单。如果您已经有Form1个实例打开,那么这将为您提供两个Form1个实例。在其中一个上调用方法不会影响另一个方法。您必须将表单的引用传递给Class1的实例,并在该引用上调用该方法。

有不同的方法可以做到这一点。可以将引用作为参数传递给x方法:

public void x(Form1 f)
{
    f.textBox1.Text = "hello";
}

当你致电x时,你可以传递特殊变量this,这是与代码相关联的对象。这会将您的Form1实例传递给x,以便x可以使用它。

c.x(this);

答案 1 :(得分:1)

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实例。根据我的代码更改您的代码,它会起作用。