我从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";
}
}
答案 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();
}
}