我有带复选框和文本框的form1。当我单击一个复选框时,将打开form2。在form2上有一个具有一定功能的按钮。此按钮的最后一步应该是将文本传递到form1文本框。 如何将文本从form2方法传递到form1文本框?请注意,我不想隐藏或关闭form1,或创建form1的新实例。 我怎样才能做到这一点? 我检查了一下,但没有成功: Send values from one form to another form
答案 0 :(得分:3)
U可以简单地在Form2的构造函数中引用Form1
public Form2(Form1 frmMain){
InitializeComponents();
_FrmMain = frmMain;
}
仅在初始化Form2时:
Form2 frm2 = new Form2(this);
frm2.Show();
现在在Form2中,您应该能够仅通过属性更改所有内容:
private void BtnSend_Clicked(object sender, EventArgs e)
{
_FrmMain.Foo = Bar;
}
答案 1 :(得分:1)
一种替代方法是使用Application.OpenForms巫婆是一个FormCollection,其中包含当前应用程序拥有的所有打开的表单。 主要的将是Application.OpenForms [0],但是此集合将具有Form类型,因此您需要对其进行强制转换:
private void BtnSend_Clicked(object sender, EventArgs e)
{
((Form1)Application.OpenForms[0]).Data = "..."; //Data is a property on Form1
}
您还可以执行以下操作:
private void BtnSend_Clicked(object sender, EventArgs e)
{
var myMainForm = Application.OpenForms[0] as Form1;
if (myMainForm != null)
{
myMainForm.Data = "...";
}
}
这可能不是解决问题的最佳方式,但它可以让您执行其他操作,例如: