从另一个表单获取文本框值

时间:2011-11-09 17:49:35

标签: c# winforms textbox

我在TextBox中有一个名为pass的{​​{1}}我需要获取Form1中的值。我试过这个:

form2

上面的代码返回一个空字符串,为什么?

6 个答案:

答案 0 :(得分:3)

您没有通过语法错误等证明您的实际代码。 - 您的问题的唯一合理解释是您没有正确地将Form1的引用传递给Form2,而是创建而是一个新表单 - 新表单将具有空文本框。

为了进一步帮助您,请说明如何在实际代码中将引用传递给Form1。

修改

现在看到您的编辑正好是问题所在。您必须将Form1实例传递给form2,而不是创建一个新实例,即:

public partial class form2 : Form 
{
  private Form1 form1;

  public form2(Form1 otherForm)
  {
     form1 = otherForm;
  }

  public void Foo()
  {
     MessageBox.Show(form1.GetPass());
  }
}

答案 1 :(得分:2)

在声明部分中将一个字符串变量定义为Public 对于前我们有一个名为“frmOne”的表单

public string strVar = string.Empty;

现在,将“frmOne”的TextBox值赋给该变量,从中获取Textbox的值。

代表。

strVar = Textbox1.Text.ToString();

现在以另一种形式说“frmTwo”,您将获得“frmOne”文本框的值(您想要获取值):

frmOne frm = new frmOne();
string strValue = frm.strVar;       

因此,最后strmalue局部变量frmTwo包含frmOne的Textbox值。

答案 2 :(得分:0)

因为您每次致电Form1时都在创建GetPass()的新实例。

您需要以这种或那种方式获取已打开form1的实例,并在其上调用GetPass

form1.GetPass();

如果form1form2的创建顺序没有具体说明,您可以使用以下内容获取form1的实例:

foreach (Form openedForm in Application.OpenForms) {
    if (openedForm.GetType() == Form1) {
        MessageBox.Show(openedForm.GetPass());
    }
}

答案 3 :(得分:0)

您正在创建一个新的form1,其中文本框可能为空,并在该空表单上调用GetPass()。您需要一个已打开的form1的实例,其中文本框可能有值。

答案 4 :(得分:0)

它正在返回空,因为您正在创建表单的新实例。假设Form1已经在某处打开,您需要检索Form1的现有实例并从那里提取值。

答案 5 :(得分:0)

嗨,你可以这样写:

 public partial class Form1: Form
{
    public Form1()
    {
        InitializeComponent();
    }
        internal Form2 F2=new form2();

            private void CommandBarButton1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(f2.TextBox1.Text);

    }

}