C#从另一个类获取textBox值

假设我有一个名为Form1的表单,其中包含textBox和button。

我想在按钮点击时从另一个类获取textBox值。 我试图这样做,但它不起作用:

class Main { public void someMethod() { Form1 f1 = new Form1(); string desiredValue = f1.textBox.Text; } } 

请原谅我这个愚蠢的问题,但我在C#中很新,并且不能让这个东西起作用。

您需要找到打开的Form1而不是创建另一个Form1,创建以下类

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Windows.Forms; namespace WindowsFormsApplication1 { class Class1 { public void someMethod() { TextBox t = Application.OpenForms["Form1"].Controls["textBox1"] as TextBox; Debug.WriteLine(t.Text + "what?"); } } } 

然后在按钮单击方法中

 private void button1_Click(object sender, EventArgs e) { Class1 c = new Class1(); c.someMethod(); } 

你的textBox可能是private ,尽管它应该是这样。 如果您需要文本框中的文本,则可以使用属性公开它

 public string TextBoxText{ get { return textBox.Text; } } 

当你说

 Form1 f1 = new Form1(); 

您正在使用自己的文本框创建一个全新的对象。

如果需要该表单的文本框上的值,则需要引用用户键入值的Form1的同一实例。

我认为它是因为你正在创建一个form1的新实例,所以你实际上只从f1获取文本框文本。

这是伪代码,或者这是您实际尝试使用的代码?

如果您正在尝试使用此代码,那么您正在创建一个全新的Form1。 除非Form1的构造函数将某些内容放入文本框中,否则此时它将为空。