我正在使用 CompactFramework 来制作 WinCE 应用程序。
我有一个 Form1 和一个 Class1。在 Form1 中,我有一个 label1,我需要从 Class1 访问它。
如果我尝试:
Form1.label1
尽管我将修饰符属性设置为公共,但它没有出现。
我怎样才能访问标签?
谢谢你的帮助!
我正在使用 CompactFramework 来制作 WinCE 应用程序。
我有一个 Form1 和一个 Class1。在 Form1 中,我有一个 label1,我需要从 Class1 访问它。
如果我尝试:
Form1.label1
尽管我将修饰符属性设置为公共,但它没有出现。
我怎样才能访问标签?
谢谢你的帮助!
问题是 Form1 是一个类,您需要该类的一个实例,因为您的标签不是静态的。
var myForm = new Form1(); myForm.label1.Text = "你好";
显然,您不想从您的类中创建新表单,因为您的应用程序可能创建了该表单。
因此,您应该将表单传递给班级。类是否被表单实例化?如果是这样,您可以将“this”传递给类以发送对实例化表单的引用。
但实际上,您不想这样做,因为它很难维护。更好的办法是让类引发表单可以订阅以更新自身的某种事件。
Try to create property or method on the Form1 class to return label1 object
您可以将 Form1 实例化为 Class1,然后使用此实例设置 Form1.label1。这将是一个优雅的解决方案。检查此代码:
public partial class Form1 : Form
{
public Label Label1 { get; set; }
public void Caller()
{
MyClass cls = new MyClass();
cls.Form1 = this;
cls.DoSomeJob();
}
}
public class MyClass
{
public Form1 Form1 { get; set; }
public void DoSomeJob()
{
Form1.Label1.Text = "Some text...";
}
}