Как получить доступ к предыдущей форме после выполнения showdialog? - PullRequest
2 голосов
/ 10 августа 2011

Не удается разобраться с этим.

В настоящее время у меня есть frmMain и frmLoading ..

внутри события frmMain Shown, я выполняю

frmLoading load = new frmLoading();
load.ShowDialog();

внутри frmLoading .. Я хочу получить доступ к frmMain .. Я знаю, что могу передать предыдущую форму внутри конструктора, но я хотел бы избежать этого, если это возможно ..

Думал, что это будет так. Владелец илиthis.Parent .. нет, обыскал все свойства в "this", "Form" .. не смог найти его ..

Есть идеи?

Ответы [ 3 ]

6 голосов
/ 10 августа 2011

Избегайте того, чтобы Winforms угадывали, кто должен быть владельцем, уточните:

frmLoading load = new frmLoading();
load.ShowDialog(this);

Теперь вы можете надежно использовать свойство Owner, чтобы найти владельца, как только будет запущено событие Load.Если вам это нужно в конструкторе, вам придется передавать его как аргумент конструктора, а не как вопрос, конечно, и предпочтительного решения, поскольку он не зависит от используемой вами перегрузки Show.Попробуйте использовать события, чтобы избежать связи.

0 голосов
/ 18 января 2018
frmLoading load = new frmLoading();
load.ShowDialog(this);

после

Button yourbutton= ((frmLoading)this.Owner).yourbutton;
yourbutton.Text= "Okay";
0 голосов
/ 10 августа 2011

frmLoading не знает о frmMain. Но вы можете использовать события, если вы хотите изменить sth на главной форме из второй формы. Вам нужно передать дескриптор frmMain в frmLoading.

Смотрите здесь: http://forum.codecall.net/c-programming/515-c-calling-parent-functions-child-form.html

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