这个问题在这里已有答案:
所以这与我看到的有点不同:
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,有人可以协助吗?
你必须在一些属性中将Textbox
value存储在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;
}
我想尽我所能帮助你,但你提供的信息对我来说并不是那么清楚。
您可以做的是在创建新表单时使用构造函数来传递文本
EG
Form1 frm1 = new Form1("some value or variable");
当您需要定制信息时,请提供更多代码并更好地解释您的问题。
您可以为Form2创建一个构造函数,它将Form1作为父项:
public partial class Form2 : Form
{
Form1 Parent { get; }
public Form2(Form1 parent)
{
Parent = parent;
Parent.TextBoxValue = "SomeValue";
}
}
但是我不认为这是好习惯。如果您的Form2需要将结果传递回Form1,那么您需要改变您的方法。相反,你应该在Form2上有一个公共属性或方法,你可以从Form1内部分配。