我正在研究一个C#程序,现在我有一个Form
和几个类.我希望能够从我的课程中访问一些Form
控件(例如a TextBox
).当我尝试更改TextBox
我的类中的文本时,我收到以下错误:
非静态字段,方法或属性'Project.Form1.txtLog'需要对象引用
如何访问Form1.cs
其中一个类中的方法和控件?
您正在尝试访问该类而不是该对象.这个陈述对于初学者来说可能会让人感到困惑,但是你有效地试图通过拿起房子计划的大门打开你的房门.
如果您确实想直接从类(您没有)访问表单组件,则可以使用实例化表单的变量.
根据您想要的方式,您可以更好地将控件文本或其他任何内容发送到类中的方法,例如
public void DoSomethingWithText(string formText) { // do something text in here }
或者在表单类上公开属性并在其中设置表单文本 - 例如
string SomeProperty { get { return textBox1.Text; } set { textBox1.Text = value; } }
另一种解决方案是将文本框(或您想要修改的控件)传递给将其作为参数进行操作的方法.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { TestClass test = new TestClass(); test.ModifyText(textBox1); } } public class TestClass { public void ModifyText(TextBox textBox) { textBox.Text = "New text"; } }
您必须具有对表单对象的引用才能访问其元素
必须将元素声明为public才能让另一个类访问它们
不要这样做 - 你的班级必须过多地了解你的表格是如何实现的; 不要在表单类之外公开表单控件
相反,在表单上创建公共属性以获取/设置您感兴趣的值
发布您想要的更多细节以及为什么,听起来您可能正朝着与良好封装实践不一致的方向前进