例如在我的新课程中我有这个:
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中为所有这些对象创建一个属性,这样我可以在新类中轻松使用它们? **
答案 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,您可以在新类中创建一个事件,并在您可以访问控件的表单类中订阅它。然后使用事件参数,您可以为偶数处理程序提供控件的设置。在这种情况下,您不会从任何其他地方打开对控件的访问权限,然后形成类。