C# winform文本框未更新
我有两个WinForm1和form2,如下所示:C# winform文本框未更新,c#,winforms,C#,Winforms,我有两个WinForm1和form2,如下所示: public partial class Form1 : Form { Form2 frm2; int count = 0; public bool fromForm2; public Form1(bool fromForm2 = false) { InitializeComponent(); this.fromForm2 = fromForm2; Me
public partial class Form1 : Form
{
Form2 frm2;
int count = 0;
public bool fromForm2;
public Form1(bool fromForm2 = false)
{
InitializeComponent();
this.fromForm2 = fromForm2;
MessageBox.Show(fromForm2.ToString());
if (fromForm2 == true) {
test();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (frm2 == null)
{
frm2 = new Form2(); //Create form if not created
frm2.FormClosed += frm2_FormClosed; //Add eventhandler to cleanup after form closes
}
frm2.Show(this); //Show Form assigning this form as the forms owner
}
void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
frm2 = null; //If form is closed make sure reference is set to null
Show();
}
public void test ()
{
textBox1.Text = "ABCDFGHIJKLM";
MessageBox.Show(textBox1.Text);
}
}
表格二
public partial class Form2 : Form
{
Form1 f1;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 objj = new Form1(true);
objj = (Form1)Application.OpenForms["Form1"];
objj.fromForm2 = true;
objj = null;
}
}
我想单击form2中的按钮,将运行test(),但我发现,如果我使用if(fromForm2==true){}if语句,test()函数将不会更新(重新绘制?)文本值以显示到textBox1,有人知道这是什么原因吗?看看代码的这一点:
Form1 objj=new Form1(true);objj=(Form1)Application.OpenForms[“Form1”]
显然,objj
包含的另一个实例与您在第一条语句中创建的实例不同。一个打开的实例,可能使用了Form1
的默认无参数构造函数,这意味着fromForm2=false
@RezaAghaei如何解决问题?您使用的是分部类,可以直接访问变量。尝试在字符串变量中分配textbox值并访问它。我已经重建了整个问题,问题解决了