从C#中的另一个表单访问文本框-注意,我要设置其为该表单的表单是第一个表单

时间:2018-09-01 15:35:42

标签: c# .net

所以这与我所看到的有些不同:

How to change text in a textbox on another form in Visual C#?

我有一个窗体(Form1)在我的C#应用​​程序运行时运行。按钮Form1打开Form2。在Form2上,我还有另一个按钮可以将Form1上的文本框的文本设置为与Form2上的文本框相同的值。

使用类似的方法:

Form1 frm1 =新的Form1();     frm1.TextBoxValue =“ SomeValue”;

它不能完全打开新表单,但是我想更改已经打开的form1,有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

您必须将Textbox值存储在Form2上的某些属性中,如下所示:

public string ReturnValue {get;set;} 

private void Form2_button2_Click(object sender, EventArgs e)
{
     ReturnValue = txtInput.Text;
}

或者您可以将Form2.Designer.cs中生成的字段的访问修饰符从私有更改为公共。

更改此

private System.Windows.Forms.TextBox txtInput;

以此

public System.Windows.Forms.TextBox txtInput;

然后在Form1中获得ReturnValue的值当最终用户关闭Form2

private void Form1_popupButton_Click(object sender, EventArgs e)
    {
       Form2 frm = new  Form2();
       frm.ShowDialog();

      // get ReturnValue from form2
      string ReturnValue = frm.ReturnValue ;
      //get txtInput value directly
      ReturnValue = frm.txtInput.Text;
}

答案 1 :(得分:0)

我想尽我所能为您提供帮助,但是您提供的信息对我来说并不清楚。

您可以做的是在创建新表单时使用构造函数传递文本

E.G。

Form1 frm1 = new Form1("some value or variable");

当您需要量身定制的信息时,请提供更多代码并更好地说明您的问题。

答案 2 :(得分:0)

您可以为Form2创建一个构造器,该构造器将Form1作为父项:

public partial class Form2 : Form
{
    Form1 Parent { get; }
    public Form2(Form1 parent)
    {
        Parent = parent;
        Parent.TextBoxValue = "SomeValue";
    }
}

但是,我认为这不是好习惯。如果您的Form2需要将结果传递回Form1,那么您需要颠倒您的方法。相反,您应该在 Form2 上有一个公共属性或方法,可以从 Form1 内部分配。