Как получить доступ к элементу управления, добавленному на панель? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь изменить на работе текст метки (label.Text), который я ранее добавил на панель (MyPanel.Controls.Add (MyLabel).

Я добавляю метку впанель в функции:

public PanelEx nameoffunction()
{
.
.
MyPanel.Controls.Add(MyLabel);
return MyPanel;
.
.
}
MyPanelWithControl = nameoffunction();

Теперь у меня в MyPanelWithControl панель с меткой. Как мне теперь получить доступ к ранее добавленной метке, чтобы изменить одно из ее полей?

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете найти элемент управления, используя его свойство Name:

MyLabel.Name = "label1";
MyPanel.Controls.Add(MyLabel);
...
MyPanel.Controls["label1"].Text = "updated text";

Однако этот подход может привести к проблемам позже, если вы внесете изменения в свой пользовательский интерфейс. Если вы переместили метку на другую панель или изменили ее имя, то код, который пытается найти ее, используя имя, все равно будет компилироваться, но вызовет ошибку во время выполнения. Для долгосрочных проектов предпочтительно хранить ссылки на элементы управления в виде свойств:

public class PanelEx : Panel {
    ...
    public Label MyLabel { get; set; }
}

public PanelEx nameoffunction() {
    ...
    MyPanel.MyLabel = MyLabel;
    return MyPanel;
}

И затем вы можете получить доступ к метке непосредственно из объекта панели:

MyPanel.MyLabel.Text = "updated text";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...