0

我正在使用 CompactFramework 来制作 WinCE 应用程序。

我有一个 Form1 和一个 Class1。在 Form1 中,我有一个 label1,我需要从 Class1 访问它。

如果我尝试:

Form1.label1

尽管我将修饰符属性设置为公共,但它没有出现。

我怎样才能访问标签?

谢谢你的帮助!

4

3 回答 3

1

问题是 Form1 是一个类,您需要该类的一个实例,因为您的标签不是静态的。

var myForm = new Form1(); myForm.label1.Text = "你好";

显然,您不想从您的类中创建新表单,因为您的应用程序可能创建了该表单。

因此,您应该将表单传递给班级。类是否被表单实例化?如果是这样,您可以将“this”传递给类以发送对实例化表单的引用。

但实际上,您不想这样做,因为它很难维护。更好的办法是让类引发表单可以订阅以更新自身的某种事件。

于 2012-08-21T20:18:07.893 回答
0

Try to create property or method on the Form1 class to return label1 object

于 2012-08-21T19:49:20.453 回答
0

您可以将 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...";
    }
}
于 2012-08-21T19:49:16.247 回答