从C#中的另一个表单访问文本框 - 注意,我要设置框的表单是第一个表单[复制]

问题描述 投票:-3回答:3

这个问题在这里已有答案:

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

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

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

使用类似的方法:

Form1 frm1 = new Form1(); frm1.TextBoxValue =“SomeValue”;

不起作用,因为它完全打开一个新表单,但我想更改已经打开的form1,有人可以协助吗?

c# .net
3个回答
2
投票

你必须在一些属性中将Textboxvalue存储在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;
}

0
投票

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

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

EG

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

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


0
投票

您可以为Form2创建一个构造函数,它将Form1作为父项:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.