将数据从form2方法传递到form1文本框

时间:2020-10-14 13:33:47

标签: c# winforms

我有带复选框和文本框的form1。当我单击一个复选框时,将打开form2。在form2上有一个具有一定功能的按钮。此按钮的最后一步应该是将文本传递到form1文本框。 如何将文本从form2方法传递到form1文本框?请注意,我不想隐藏或关闭form1,或创建form1的新实例。 我怎样才能做到这一点? 我检查了一下,但没有成功: Send values from one form to another form

2 个答案:

答案 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 = "...";
        }
    }

这可能不是解决问题的最佳方式,但它可以让您执行其他操作,例如:

  • 搜索特定的打开表格;
  • 向所有(或部分)打开的表单发送信号;