0

我想设置textbox.textfrom 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修饰符更改为公共。

4

2 回答 2

3

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

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

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

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

c.x(this);
于 2013-04-09T09:16:07.920 回答
0
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 实例。根据我的代码段更改您的代码,它将起作用。

于 2013-04-09T09:16:58.417 回答