C# Get textBox value from another class

2019-05-10 12:52发布

Let's say I have a form named Form1 with textBox and button in it.

I want to get the textBox value from another class on button click. I'm trying to do it like this, but it doesn't work:

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

Forgive me for the dumb question, but I'm pretty new in C# and can't get this thing to work.

标签: c# textbox
5条回答
【Aperson】
2楼-- · 2019-05-10 13:22

When you say

Form1 f1 = new Form1();

You are creating a whole new object with its own textbox.

If you want the value that is on that textbox of that form, you will need to refer to the same instance of Form1 where the user typed the value.

查看更多
放我归山
3楼-- · 2019-05-10 13:25

I think its because you are creating a new instance of form1 so you are actually only getting the textbox text from f1.

查看更多
神经病院院长
4楼-- · 2019-05-10 13:26

You need to find the opened Form1 instead of creating another Form1, create the following class

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?");
        }
    }
}

Then in your button click method

private void button1_Click(object sender, EventArgs e)
{
    Class1 c = new Class1();
    c.someMethod();
}
查看更多
三岁会撩人
5楼-- · 2019-05-10 13:47

your textBox is probably private, although that is as it should be. If you need the Text from the textbox you can expose it with a property

public string TextBoxText{ get { return textBox.Text; } }
查看更多
对你真心纯属浪费
6楼-- · 2019-05-10 13:47

Is this pseudo-code, or is this the code you're actually trying to use?

If you're trying to use this code, what you're doing is creating a brand new Form1. Unless the constructor for Form1 puts something into your textbox, it will be empty at this point.

查看更多
登录 后发表回答