Jammes_Ca Ответов: 1

Закрыть родительскую форму из дочерней формы


Привет, у меня большая проблема, я работаю над приложением для умного устройства. у меня было 3 формы.

у меня есть 3 формы

форма 1 выполните это действие
{
            Form2 f = new Form2();
            f.ShowDialog();


форма 2 выполните это действие
Form3 f = new Form3();
          f.ShowDialog();


теперь кнопка form3 hase 2.
я хочу, чтобы первая кнопка играла мне форму 1
и кнопка seconde для отображения формы 2

для второй кнопки это легко я делаю именно это
this.close()


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

я использую Visual Studio 2008 с смарт-устройства компактные проводился с#

Что я уже пробовал:

Привет, у меня большая проблема, я работаю над приложением для умного устройства. формы ihad.

у меня есть 3 формы

форма 1 выполните это действие
{
            Form2 f = new Form2();
            f.ShowDialog();


форма 2 выполните это действие
Form3 f = new Form3();
          f.ShowDialog();


теперь кнопка form3 hase 2.
я хочу, чтобы первая кнопка играла мне форму 1
и кнопка seconde для отображения формы 2

для второй кнопки это легко я делаю именно это
this.close()


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

я использую Visual Studio 2008 с смарт-устройства компактные проводился с#

BillWoodruff

Вы разрабатываете с использованием стандартной библиотеки приложений WinForms ? Не какая-нибудь мобильная версия фреймворка ?

Если вы более четко опишете, какова ваша цель здесь, я могу предложить вам несколько практических советов, которые дополнят анализ Сергея того, что не так с тем, что вы делаете сейчас.

Никогда не показывайте элемент WinForm с помощью 'ShowDialog либо создавайте, либо закрывайте другие формы. Я также советую не использовать "MessageBox".Show () в форме, показанной модально.

1 Ответов

Рейтинг:
2

Sergey Alexandrovich Kryukov

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

Некоторая предыстория: несмотря на то, что между экземплярами System.Windows.Forms.Control, эта связь по умолчанию оказывается несуществующей для форм, которые наследуют связанные свойства. Вы могли бы изменить его, но это не имело бы никакого практического смысла. Существует связь между основной формой и другими формами, и очень полезная связь собственности.

Ваша проблема связана с совсем другим аспектом: модальным поведением форм, показанных через Form.ShowDialog это не имеет ничего общего с отношениями между родителями и детьми. Вся идея такого поведения такова: вы не можете получить доступ ни к какой другой части пользовательского интерфейса, пока такая форма находится в модальное состояние Вы никогда не должны пытаться сломать это поведение какими-то хитростями. Более того, можно, но очень нежелательно складывать более одной модальной формы, одну поверх другой. Многие диалоговые окна Microsoft все еще делают такие вещи, особенно в Панели управления, но следовать этой плохой модели поведения-плохая идея. Лучше показывать не более одной модальной формы за раз и ограничить количество таких форм. Помните, что идеальный пользовательский интерфейс вообще не будет иметь модальных состояний; но в некоторых случаях это просто немного сложнее реализовать.

Если вы объясните свою конечную цель, возможно, вы получите дальнейшие советы.

—СА