如何在新类中使用Form1设计器中的标签?

时间:2012-03-30 17:16:49

标签: c#

例如在我的新课程中我有这个:

if ((connectionStart[f] == i && connectionEnd[f] == j) || (connectionStart[f] == j && connectionEnd[f] == i)) // this checking dosent work good !
                {
                    //button2.Enabled = false;
                    return;
                }
                else
                {
                    /*label12.Text = connectionStart[f].ToString();
                    label11.Text = connectionEnd[f].ToString();
                    label9.Visible = true;
                    label10.Visible = true;
                    label11.Visible = true;
                    label12.Visible = true;*/
                } 

用/ *和* /标记为

但是我怎样才能将它们与button2一起使用,以便在运行程序时生效?

我不能在Form1中使按钮或标签静态,因为它们在设计器中,我不想使用静态。

我不想创建Form1实例。

我还想为所有标签,按钮和其他对象构建类似于类中的某些功能,因此我可以轻松使用它们,因此它们将在我运行程序时生效。

目前它们并不存在于新课程中。

**也许在Form1中为所有这些对象创建一个属性,这样我可以在新类中轻松使用它们? **

1 个答案:

答案 0 :(得分:1)

首先,这些控件放在已经实例化的某个表单上。因此,您需要在新类(ctor,property,method等)中提供此实例。

然后在表单类中,您需要通过公共属性或方法打开对控件实例的访问权限(因为它们是私有的或默认受保护的)。

然后您可以访问您班级中的控件,如:

public class MySecondClass {

    private MainForm mainForm;

    public MySecondClass(MainForm mainForm) 
    {
        this.mainForm = mainForm; 
    }

    public void SomeFinctionOfNewClass()
    {
        this.mainForm.Label10.Text = "Some text for label"; // it's using property
    }
}

作为选项2,您可以在新类中创建一个事件,并在您可以访问控件的表单类中订阅它。然后使用事件参数,您可以为偶数处理程序提供控件的设置。在这种情况下,您不会从任何其他地方打开对控件的访问权限,然后形成类。