从表单创建实例时如何更改textbox.text?

时间:2018-07-13 16:11:30

标签: c# winforms

我从myclass中调用了一个位于窗体中的方法,并且在我设置了textbox.text="xyz"的方法中,但我的文本框的文本未更改。 另外,form2显示我调用aa()。 我的错误在哪里?

class a
{
   private void aa()
   {
       Form2 f2 = new Form2();
       f2.b();
   }
}

public partial class Form2 : form
{
    public void b()
    {
       textbox1.text= "xyz";
    }
}

2 个答案:

答案 0 :(得分:0)

首先,在调用f2.b();更新某些控件之前,请确保已创建窗口句柄:

 f2.Show();

如果您从另一个aa()调用函数Form(例如,从Form1调用),则创建Thread-Safe Call,这涉及在需要时调用线程。

class a
{
    private void aa()
    {
        Form2 f2 = new Form2();
        f2.Show();
        f2.b();
    }
}

public partial class Form2 : Form
{
    public void b()
    {
        Action a = delegate
        {
            UpdateControls();
        };

        MethodInvoker Invoker = new MethodInvoker(a);

        if (InvokeRequired)
            this.Invoke(Invoker);
        else
            a();
    }

    public void UpdateControls()
    {
        textbox1.Text = "xyz";
    }
}

答案 1 :(得分:0)

尝试一下:

class a
{
    Form f1;
    a(Form f){
        f1 = f;
    }
   private void aa()
   {
       f1.b();
   }
}
public partial class Form2 : form
{
    public void b()
    {
       textbox1.text= "xyz";
    }
    private void button1.Clicked(args, events){
        a obj = new a(this.Form);
        obj.aa();
    }
}