C# 从表单创建实例时如何更改textbox.text?
我从myclass中调用了一个方法,该方法位于我的表单和我设置的方法C# 从表单创建实例时如何更改textbox.text?,c#,winforms,C#,Winforms,我从myclass中调用了一个方法,该方法位于我的表单和我设置的方法textbox.text=“xyz”中,但我的textbox的文本不变。 此外,form2显示我调用aa()。 我的错在哪里 class a { private void aa() { Form2 f2 = new Form2(); f2.b(); } } public partial class Form2 : form { public void b() {
textbox.text=“xyz”
中,但我的textbox的文本不变。
此外,form2显示我调用aa()。
我的错在哪里
class a
{
private void aa()
{
Form2 f2 = new Form2();
f2.b();
}
}
public partial class Form2 : form
{
public void b()
{
textbox1.text= "xyz";
}
}
首先,在调用
f2.b()之前
要更新某些控件,请确保已创建窗口句柄:
f2.Show();
如果您从另一个表单调用函数aa()
(比如从Form1
),请进行线程安全调用
,该调用包括在需要时调用线程
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";
}
}
试试这个:
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();
}
}
试试这个:form2f2=newform2();f2.show();f2.b();在aa()
方法中,您正在创建一个新的表单2
,但您在其中调用Show()
或ShowDialog()
的是什么?您没有显示新表单。很难理解为什么你认为文本框没有改变,因为它甚至不应该是可见的。@LosPollosHermanos你还在做生意吗?现在谁在主持这个节目猜测一下,也许你已经有了一个不同的Form2副本,它已经是可见的了?但是您已经创建了一个新的副本,并且您的代码更新了该副本,而不是任何以前的版本?您应该解释代码与原始代码之间的差异,以便人们知道它为什么有用。