如何访问TextBox“;textBox2”;从“;程序“;班

本文关键字:textBox2 程序 TextBox 何访问 访问 | 更新日期: 2023-09-27 18:20:54

如您所见,我使用的类名是Visual C#生成的类的默认名称。如何更改"Program"类中名为"textBox2"(此TextBox已放置在Form1设计中)的TextBox中的值?我尝试了很多事情,我尝试的每一件事都会导致这个错误(或类似错误):An object reference is required for the non-static field, method, or property 'WindowsFormsApplication1.Form1.textBox2'

如果可以的话,请尽量保持你的答案简单,谢谢。

如何访问TextBox“;textBox2”;从“;程序“;班

首先,您通常不应该访问程序类中的控件,如文本框。相反,您应该在Form1.cs文件中执行此操作。Form1是一个类,它有一个受保护的textBox2字段,因此在类之外无法访问。如果您想更改Program.cs的值,您应该在Form1中添加一个公共函数,设置textBos2.Text.的值

其次,您似乎只是在键入类名,而不是实例的名称。区别在于Textbox是一个类,textBox1和textBox2是实例。文本框。文本无效,因为您需要指定要获取或设置文本的文本框。Form1.extBox2也是如此。Form1是一个类,可以有很多。必须指定表单实例的名称才能访问其公共成员。

更新:

我只想简单地解释一下类和类的实例、静态字段和非静态字段之间的区别。请原谅任何罗嗦。

当您创建新的windows窗体应用程序时,Visual Studio将为您创建一个Form1类型。Form1是一个类。然后程序使用Form1创建一个表单实例并显示它

Form1 form = new Form1;

在这种情况下,form就是实例。您可以创建Form1的多个实例。每个实例都将具有您创建的textBox2,它是Textbox类的一个实例。就像你必须执行textBox2.Text才能获得你在表单上创建的第二个Textbox的文本一样,你必须指定form.textBox2(或设置textBox2.Text值的公共方法)。Form1,即使它是一个类之后有一个数字,form就是实例。它们与Textbox和textBox2具有相同的关系。

实例可以访问非静态成员。类可以访问静态成员。静态成员不能访问非静态成员,除非它通过实例。

您需要有一个Form1的实例才能执行此操作。

Form1 frm = new Form1();

然后你必须建立一个公共方法来访问你的文本框,因为它是一个私有成员。

Form1.cs:

public void UpdateText(string newValue)
{
    this.textbox2.Text = newValue;
}

最后:

frm.UpdateText("new text");

您必须创建Form1类的新实例
没有new() ,您无法"访问"非静态var

var form1 = new Form1();
form1.textBox2.Text= "aaa";

将textBox2设为公共或内部。为此,请从设计器(Properties)中调整其Modifier属性。然后在"程序"类的Main中执行此操作:

    Form1 f = new Form1();
    f.textBox2.Text = "sdfsdf";
    Application.Run(f);

无论如何,这绝对是个糟糕的设计。。告诉我们你为什么想要这个,我们将有助于处理真正的问题。