C# 调用未填充已打开表单的文本框字段的构造函数?

C# 调用未填充已打开表单的文本框字段的构造函数?,c#,.net,winforms,C#,.net,Winforms,我正在开发一个应用程序,我必须从两个不同的表单中获取数据,以填充同一表单的不同字段 我的工作 我使用参数从party form和itemform调用了form1的构造函数 代码表单Itemform string units = dr.Cells[2].Value.ToString(); string rate = dr.Cells[3].Value.ToString(); Form1 f1 = new Form1( uni

我正在开发一个应用程序,我必须从两个不同的表单中获取数据,以填充同一表单的不同字段

我的工作

我使用参数从party form和itemform调用了form1的构造函数 代码表单Itemform

            string units = dr.Cells[2].Value.ToString();
            string rate = dr.Cells[3].Value.ToString();

            Form1 f1 = new Form1( units, rate);

            this.Hide();
调试时调用了form1上的构造函数

    public Form1(string units, string rate)
     {
         InitializeComponent();
         ItemId_LBL.Text = units;
         ItemName_TXT.Text = rate;
         }
另一个表单也一样,但我不想关闭我的主表单1,只想在单击按钮时关闭其他表单,但字段未填充为什么

注意:

我必须填写已经打开的表格FORM1的文本框


我想你要找的是
应用程序。OpenForms
,使用它来创建打开表单的实例并访问文本框。

我想你要找的是
应用程序。OpenForms
,使用它来创建打开表单的实例并访问文本框。

如果Form1已经打开,这意味着构造函数已经运行。创建一个setter方法并从其他表单调用该方法

public void UpdateUnitAndRate(string units, string rate)
{
    ItemId_LBL.Text = units;
    ItemName_TXT.Text = rate;
}

//put it in form2 (or itemform) as a field
Form1 f1;

//add this in the method or event (in itemform) you want to update units and rates in form1
if (f1 != null)
   f1.UpdateUnitAndRate(units, rate);
else
   f1 = new Form1(units, rate);

如果Form1已打开,则表示构造函数已运行。创建一个setter方法并从其他表单调用该方法

public void UpdateUnitAndRate(string units, string rate)
{
    ItemId_LBL.Text = units;
    ItemName_TXT.Text = rate;
}

//put it in form2 (or itemform) as a field
Form1 f1;

//add this in the method or event (in itemform) you want to update units and rates in form1
if (f1 != null)
   f1.UpdateUnitAndRate(units, rate);
else
   f1 = new Form1(units, rate);

从另一个窗体获取打开窗体的对象

    Form1 f = (Application.OpenForms[0] as Form1);

                f.PName_TXT.Text = name.ToString();
                f.PId_LBL.Text = id.ToString();
         }

从另一个窗体获取打开窗体的对象

    Form1 f = (Application.OpenForms[0] as Form1);

                f.PName_TXT.Text = name.ToString();
                f.PId_LBL.Text = id.ToString();
         }


您需要对已打开的表单1的引用。创建新的Form1对象,在其上设置一些属性,但这不会影响已存在的实例如何使用已打开Form1创建的现有对象需要对已打开Form1的引用。创建一个新的Form1对象,在其上设置一些属性,但是这并不影响已经存在的实例如何使用打开窗体创建的现有对象我犯了一个错误,因为我正在创建一个新对象如何使用以前创建的打开窗体object@office302您需要在要从中访问文本框的表单内创建另一个表单的实例。不要使用
=newyourformname()但使用
=应用程序。OpenForms[“yourformname”]作为yourformname
Form f1=Application.OpenForms[“Form1”]甚至尝试了工作,但没有访问Form1的文本框现在我明白了,你需要将文本框公开,或者至少创建一个公开的setter。我明白了,我不想调用InitializeComponent();如果不使用这个,我会犯错误,因为我正在创建一个新对象,如何使用以前创建的开放表单object@office302您需要在要从中访问文本框的表单内创建另一个表单的实例。不要使用
=newyourformname()但使用
=应用程序。OpenForms[“yourformname”]作为yourformname
Form f1=Application.OpenForms[“Form1”]甚至尝试了工作,但没有访问Form1的文本框现在我明白了,你需要将文本框公开,或者至少创建一个公开的setter。我明白了,我不想调用InitializeComponent();如果不使用ThisTryed但not worked,则任何方法都无法通过函数和构造函数填充文本框。Form1构造函数应在加载时工作,并填写ItemId\u LBL和ItemName\u TXT的文本。确认Form1构造函数工作后,您可以继续查看新方法是否也工作。构造函数仅在我使用f1.show()时工作,但我想使用现有的open Formi如果您能够执行f1.show(),那么您也应该能够执行f1.UpdateUnitRate(单位,速率);假设f1已经是form1的实例。尝试但未工作未由函数和构造函数填充未能填充TextBoxes form1构造函数应在加载时工作并填充ItemId_LBL和ItemName_TXT的文本。确认Form1构造函数工作后,您可以继续查看新方法是否也工作。构造函数仅在我使用f1.show()时工作,但我想使用现有的open Formi如果您能够执行f1.show(),那么您也应该能够执行f1.UpdateUnitRate(单位,速率);假设f1已经是form1的实例。