所以这与我所看到的有点不同:
如何在Visual C#中更改另一个窗体上的文本框中的文本?
我有一个窗体 (Form1(,该窗体在 C# 应用程序运行时运行。一个按钮 窗体 1 打开窗体 2。在 Form2 上,我有另一个按钮将 Form1 上的文本框的文本设置为与 Form2 上的文本框相同的值。
使用类似的方法:
Form1frm1 = new Form1((; FRM1.文本框值 = "某值";
不起作用,因为它完全打开了一个新表单,但我想更改已经打开的表单1,有人可以帮忙吗?
您必须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;
}
我想尽我所能帮助你,但你提供的信息对我来说不是很清楚。
您可以做的是在创建新表单时使用构造函数传递文本
例如
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内部分配的公共属性或方法。