Доступ к родительской форме - PullRequest
4 голосов
/ 19 февраля 2011

Я знаю, что название может показаться глупым, не могу придумать что-то лучше, извините.

У меня есть 2 формы (C #), основная форма содержит экземпляр второй. Есть ли способ .. получить доступ к работающему экземпляру Form1 (точка входа) и к его свойствам из экземпляра form2?

Все говорят мне учить ООП. Я сделал это давным-давно, и до сих пор не понимаю.

Ответы [ 2 ]

9 голосов
/ 19 февраля 2011

Когда основная форма создает экземпляр второй формы, она может передать ссылку на себя конструктору второй формы.

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

EDIT

В Form1 вы где-нибудь создаете экземпляр Form2 и передаете ему ссылку на Form1 в ctor:

Form2 f2 = new Form2(this);

В определении класса Form2 добавьте поле:

private Form1 m_form = null;

В конструкторе второй формы установите это поле:

public Form2(Form1 f)
{
   m_form = f;
}

Тогда везде в вашей Форме2 у вас есть доступ к Форме1 с помощью m_form

6 голосов
/ 19 февраля 2011

Вы, вероятно, создали экземпляр Form2 из Form1.После создания экземпляра и ДО его показа вы можете установить свойство в Form2, которое ссылается на Form1, следующим образом:

Form2 f2 = new Form2();
f2.TheParent = this;
f2.Show();

Конечно, вы должны добавить свойство TheParent в класс Form2, чтобы иметь возможность сделать это.

Предупреждение: хотя это и возможно, но лучшим решением может быть создание отдельного объекта, который содержит все необходимые / общие данные и передает этот объект каждой форме аналогичным образом.Это предотвратит переплетение вашего кода.

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