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



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

如何在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中,您可以获得最终用户关闭时ReturnValueForm2

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内部分配的公共属性或方法。

相关内容

最新更新