C#从另一个类获取textBox值

时间:2012-03-08 22:43:16

标签: c# textbox

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

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

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

请原谅我这个愚蠢的问题,但我在C#中很陌生,无法让这件事发挥作用。

6 个答案:

答案 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();
    }
}