C#从另一个类中获取textBox值
本文关键字:获取 textBox 另一个 | 更新日期: 2023-09-27 18:27:08
假设我有一个名为Form1的表单,其中包含textBox和按钮。
我想在单击按钮时从另一个类获取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的构造函数将某些内容放入您的文本框中,否则此时它将为空。
Form 1
public string pathret()
{
return textBox.Text;
}
表格2
class Main
{
public void someMethod()
{
Form1 f1 = new Form1();
string desiredValue = f1.pathret();
}
}