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#还很陌生,无法让这个东西发挥作用。

C#从另一个类中获取textBox值

您需要找到打开的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();
    }
}