Использование нескольких форм в C # - PullRequest
4 голосов
/ 14 июля 2010

Я пытаюсь сделать небольшой проект, который использует несколько форм (диалогов) для разных состояний и работает с несколькими проблемами.Мои диалоги: Вход, Настройки и Дисплей.При запуске приложения отображается форма входа в систему

Application.Run(new login());

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

Q1: как мне выполнить вход в системуформа недоступна для пользователя при открытии формы настроек (я хочу, чтобы пользователь заполнил поля в форме настроек, затем нажмите кнопку «Сохранить», чтобы выйти, прежде чем он сможет что-либо еще сделать в форме входа в систему)

Q2: как скрыть форму входа в систему, когда пользователь открывает форму отображения, и показать ее снова, когда пользователь закрывает форму отображения.

для Q1: у меня нет идей, я просто подумал, что смогу сделатьтак же, как в Q2.

для Q2: я попытался отправить объект формы Login в форму Dispaly для использования метода ShowDialog ().

в форме Login я скрываю форму и показываюФорма отображения выглядит следующим образом:

this.Hide();
Display cat = new Display(ConString, idp, this);
cat.ShowDialog();

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

private void Display_FormClosed(object sender, FormClosedEventArgs e)
{
    this.Close();
    this.l.ShowDialog();
}

, где l var - объект входа, отправленный вПоказать конструктор, из тогоpe Войти.проблема в том, что форма отображения не закрывается, и если пользователь снова нажимает кнопку отображения, появится новое диалоговое окно, и я хочу максимум 1 экземпляр формы отображения.

спасибо

Ответы [ 3 ]

4 голосов
/ 14 июля 2010

Q1 & Q2: когда внутри кода формы входа в систему:

using (SettingsForm frm = new SettingsForm())
{
   Hide();
   frm.ShowDialog(this);
   Show();
}

Это то, что вы обычно видите, когда форма контролирует другую форму.ShowDialog остановит возможность выбора родительской формы, вы увидите, что ваше диалоговое окно мигает, и система должна издать шум, чтобы указать это.

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

1 голос
/ 14 июля 2010

Я бы предложил создать глобальный объект формы Login и использовать его в Display_FormClosed. ShowDialog () блокирует код и не продолжается до тех пор, пока не будет закрыта вызываемая форма.

Форма входа ожидает закрытия формы Dislay, и ваша форма отображения вызывает ShowDialog в форме входа.

1 голос
/ 14 июля 2010
  1. Когда вы переключаетесь на Настройки из входа в систему. В форме входа, с которой вы переходите к входу в систему, например, при нажатии кнопки, используйте следующий код:

    Настройка параметров = новые настройки ();

    setting.show();
    
    objLogin.close();
    
  2. то же, что и выше. с небольшими изменениями

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