所以这与我所看到的有些不同:
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,有人可以帮忙吗?
答案 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 内部分配。