首先,您通常不应该从 Program 类访问控件,例如文本框。相反,您应该在 Form1.cs 文件中执行此操作。Form1 是一个类,它有一个 textBox2 的受保护字段,因此在类外无法访问。如果要更改 Program.cs 中的值,应向 Form1 添加一个公共函数,用于设置 textBos2.Text 的值。
其次,您似乎只是在输入类名而不是实例的名称。区别在于 Textbox 是一个类, textBox1 和 textBox2 是实例。Textbox.Text 无效,因为您需要指定您尝试获取或设置文本的哪个文本框。Form1.textBox2 也一样。Form1 是一个类,可以有很多类。您必须指定表单实例的名称才能访问其公共成员。
更新:
我只是简单解释一下类和类的实例、静态字段和非静态字段之间的区别。请原谅任何啰嗦。
当您创建一个新的 Windows 窗体应用程序时,Visual Studio 将为您创建一个 Form1 类型。Form1 是一个类。然后程序使用 Form1 创建一个表单实例并显示它。代码看起来像:
Form1 form = new Form1;
在这种情况下,表单就是实例。您可以创建 Form1 的多个实例。每个实例都有您创建的 textBox2,它是 Textbox 类的一个实例。就像您必须执行 textBox2.Text 以获取您在表单上创建的第二个文本框的文本一样,您必须指定 form.textBox2(或设置 textBox2.Text 值的公共方法)。Form1,尽管它是一个类后有一个数字,而form是实例。它们与 Textbox 和 textBox2 具有相同的关系。
实例可以访问非静态成员。类可以访问静态成员。静态成员不能访问非静态成员,除非它通过实例。