[英]How do i use labels that are in Form1 dsigner at the new class?
例如在我的新課上,我有這個:
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中為所有這些對象創建一個屬性,以便我可以在新的Class中輕松使用它們? **
首先,將這些控件放在已經實例化的某種形式上。 因此,您需要在新類(ctor,屬性,方法等)中為其提供實例。
然后,在表單類中,您需要通過公共屬性或方法打開對控件實例的訪問權限(因為它們是私有的或默認情況下受保護的)。
然后,您可以訪問類中的控件,例如:
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,您可以在新類中創建一個事件,然后在可以訪問控件的表單類中訂閱該事件。 然后,可以使用事件參數將控件的設置提供給even處理程序。 在這種情況下,您將無法從窗體類之外的任何其他位置打開對控件的訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.