在C#中将TextBox文本传递到另一个窗体?

4
我尝试使用以下方式传递信息:

Form1 frm1 = new Form1(); 
 textBox1.Text = ((TextBox)frm1.Controls["textBox1"]).Text;

这是在窗体加载时获取信息的代码。但是没有文本显示。我该如何解决?Form2正在获取Form1的文本并将其显示出来。


@EliteGamer:你是如何获取frm1引用的?你能把那段代码也发一下吗? - Mark Byers
1
Form1 中的文本框是否在 Text 属性中初始化了一个值?如果没有,那就是为什么 textBox.Text 是空的原因。您希望 textBox1 中的文本应该如何显示? - IAbstract
14个回答

0

为了从另一个窗体中获取文本框的值,您必须将其修改器属性设置为“公共”。


0

请确保Form1的textBox1.Text属性被初始化为一个你可以看到的实际字符串。我怀疑,由于您正在使用Form1的默认实例,TextBox1.Text属性是String.Empty,这是默认值(也是您没有得到任何可见文本的原因,而这似乎是您所期望的)。


0
一个简单的方法是将文本框的值存储到变量中,然后使用构造函数将其传递到另一个表单。例如:
string textboxvalue=textbox1.Text();
form2 win = new form2(textboxvalue);

这里的form2是您想要发送值的表单,win是该表单的实例。


-1

表单1

 class Form1
    {

        public System.Windows.Forms.TextBox textBox1; // we need to make it public Textbox
        private System.Windows.Forms.Button button1;
    }

在Form2中,当按钮被点击或任何其他事件发生时使用。

表格2

private void button1_Click(object sender, EventArgs e)
 {
            Form1 _form1 = new Form1();
            this._form2TextBox.Text = _form1.textBox1.Text;
 }

欲了解更多详细信息,请访问MSDN


虽然这个方法可行,而且比在“Controls”集合中搜索特定控件名称要好(例如因为在表单设计器中重命名控件不会破坏此代码),但如果您经常这样做,您最终会得到不太易读和难以维护的代码。不过,在小型代码库中应该不会有问题。 - stakx - no longer contributing
-1:尽管@stakx提到了它并且你也同意,但我必须给它点个踩。即使在一个小的代码库中,我也不赞同这种做法。这是一种不好的习惯,我希望设计者甚至不要给你这个选项。有更好的方法来提供所需的功能。 - IAbstract

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接