Доступ к элементам управления в новой форме - PullRequest
0 голосов
/ 10 февраля 2009

У меня есть 2 формы в моем проекте, form1 и form2. Когда я нажимаю кнопку в форме 1, я запускаю этот код:

Form tempform = new Form2();
tempform.Show();

В моем коде для Form2 у меня есть ярлык, который мне теперь нужно изменить текст. Как я могу получить доступ к этикетке?

Я пытался:

tempform.label1.value = "new text"

И это не сработало, я даже пытался получить доступ с помощью коллекции Controls, но, думаю, я все испортил. Есть ли способ получить доступ к ярлыку? ИЛИ есть ли способ, которым я могу передать значение в эту новую форму и затем изменить ее в тексте метки.

Спасибо

Ответы [ 2 ]

7 голосов
/ 10 февраля 2009

Если значение метки должно быть установлено только один раз, при создании формы, используйте конструктор для Form2, например:

public Form2(string labelValue)
{
  _labelValue = labelValue;
}

, а затем вызовите этот конструктор при создании формы.

В качестве альтернативы, если метка изменяется в течение срока действия формы, сделайте открытое свойство:

public string LabelValue
{
  get { return label1.Text; }
  set { label1.Text = value; }
}

Также я бы порекомендовал назвать параметры и / или свойства, отражающие значение значения, например «titleText» вместо «labelValue». Таким образом, Form2 может решить, каким образом она хочет отображать информацию (в строке заголовка, метке, текстовом поле и т. Д.), И Form1 не нужно беспокоиться об этом.

Редактировать: использовать свойство LabelValue следующим образом:

Form2 newForm = new Form2(); // Assign object to a Form2 instead of Form
newForm.LabelValue = "new text";
newForm.Show();
2 голосов
/ 10 февраля 2009

Элементы управления имеют protected доступ по умолчанию. Вы можете изменить это на public или добавить метод / свойство в свой класс form2, чтобы установить метку и вызвать ее (последний метод обычно предпочтительнее для сохранения инкапсуляции и потому, что разработчик может захотеть перезаписать ваши публичные изменения.) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...