Контроль доступа к панели создается динамически - PullRequest
0 голосов
/ 06 мая 2019
var panel = new Panel()
{
    AutoSize = true,
    Height = 45,
    BackColor = Color.WhiteSmoke,
    Name =  "pnlTaskAssignation"
};

После того, как я его создал, я хочу получить доступ к элементам управления этой панели как:

foreach(Control c in pnlTaskAssignation.Controls)
{
    if(c is ComboBox)
    {
        countLabels++;
    }
}

Проблема в том, что я создал панель динамически, поэтому в коде я не могу ссылаться на нее. Так что pnlTaskAssignation не существует .. Как я могу получить доступ к элементам управления панели, если я создал его динамически?

1 Ответ

1 голос
/ 06 мая 2019

Просто сохраните исходную ссылку на panel.Если хотите, вы можете объявить переменную pnlTaskAssignation самостоятельно на уровне класса.

class MyForm
{
    protected Panel pnlTaskAssignation;  //Add this yourself

    public void MyForm_Load(object sender, EventArgs e)
    {
        var panel = new Panel()
        {
            AutoSize = true,
            Height = 45,
            BackColor = Color.WhiteSmoke,
            Name =  "pnlTaskAssignation"
        }
        pnlTaskAssignation = panel; //Save the reference here
    };

Тогда этот код будет работать:

foreach(Control c in pnlTaskAssignation.Controls)  //References the member variable defined above
{
    if (c is ComboBox)
    {
        countLabels++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...