【问题标题】:How to get a textboxt text as a string from other class in C#?如何从 C# 中的另一个类获取文本框文本作为字符串?
【发布时间】:2019-07-07 19:05:34
【问题描述】:

我有一个名为 Form1 的表单和一个名为 Class1 的类。在表单上,​​我有一个文本框 (textBox1) 和一个按钮 (button1)。

我什么都不想要,只是将 textBox1.Text 设置为 Class1 中的字符串。我在 Form1.cs 中创建了一个名为 TextValue 的属性,但如果我想在 Class1 中将其用作“string tv=Form1.TextValue;”发生错误,即“非静态字段、方法或属性 'Form1.TextValue' 需要对象引用”。我认为一切都设置为非静态的,但我现在很困惑。

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public string TextValue
        {
             get
            {
                return textBox1.Text;
            }
            set
            {
                textBox1.Text = value;
            }
        }
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

namespace WindowsFormsApp2
{
    public class Class1
    {
        string tv=Form1.TextValue;
    }
}

您能否帮我修改我的代码以便能够使用 textBox1.Text 获取字符串“tv”?

提前谢谢你。

【问题讨论】:

标签: c#


【解决方案1】:

在您发布的代码中,TextValue 不是静态的,是的。在Class1 中,您试图声明一个名为tv 的非静态成员。问题是,您正在使用表达式Form1.TextValue 初始化tv。在该表达式的上下文中,Form1 的使用是类型引用,因此编译器“认为”TextValue 是静态的,但事实并非如此。

相反,您需要在某处实例化Class1,或许还需要传入文本框的值。

类似的东西

...
private void button1_Click(object sender, EventArgs e)
{
    var value = new Class1(textbox1.Text);
}

...
public class Class1
{
    public Class1(string textboxText) => tv = textboxText;

    string tv;
}

【讨论】:

  • 谢谢,我没有收到任何错误,但它似乎仍然无法正常工作。我的意思是,如果我将文本写入 textBox1,Class1 中的变量“tv”不会得到文本,因为它的值。
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2016-11-24
  • 1970-01-01
相关资源
最近更新 更多