假设我有一个名为Form1的表单,其中包含textBox和button。
我想在按钮点击时从另一个类获取textBox值。 我试图这样做,但它不起作用:
class Main
{
public void someMethod()
{
Form1 f1 = new Form1();
string desiredValue = f1.textBox.Text;
}
}
请原谅我这个愚蠢的问题,但我在C#中很陌生,无法让这件事发挥作用。
答案 0 :(得分:13)
您需要找到打开的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();
}
答案 1 :(得分:5)
你的textBox可能是private
,尽管它应该是这样的。
如果您需要文本框中的文本,则可以使用属性
public string TextBoxText{ get { return textBox.Text; } }
答案 2 :(得分:2)
当你说
时Form1 f1 = new Form1();
您正在使用自己的文本框创建一个全新的对象。
如果您想要该表单文本框中的值,则需要引用用户键入值的Form1的同一实例。
答案 3 :(得分:1)
我认为是因为你正在创建一个form1的新实例,所以你实际上只是从f1获取文本框文本。
答案 4 :(得分:0)
这是伪代码,或者这是您实际尝试使用的代码?
如果您正在尝试使用此代码,那么您正在创建一个全新的Form1。除非Form1的构造函数将某些内容放入文本框中,否则此时它将为空。
答案 5 :(得分:0)
表格1
public string pathret()
{
return textBox.Text;
}
表格2
class Main
{
public void someMethod()
{
Form1 f1 = new Form1();
string desiredValue = f1.pathret();
}
}