2010-07-14 2 views
4

Я пытаюсь создать небольшой проект, который использует несколько форм (диалогов) для разных состояний и запускается в нескольких проблемах. Мои диалоги - это Логин, Настройки и Экран. При запуске приложения Войти Форма отображаетсяИспользование нескольких форм в C#

Application.Run(new login()); 

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

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

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

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

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

в форме входа я скрыть форму и показать форму дисплея, как это:

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 - это объект Login, отправленный в конструктор Display, типа Login. проблема заключается в том, что форма отображения не закрывается, и если пользователь снова нажимает кнопку, появится новое диалоговое окно, и я хочу, чтобы 1 экземпляр формы отображения отображался.

благодаря

ответ

4

Q1 & Q2: когда внутри формы Войти код:

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

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

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

1
  1. При переключении на Настройки из Логин. В форме входа в систему, откуда вы переходите на вход в систему, например, при нажатии кнопки мыши, используйте следующий ocde.

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

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

1

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

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

+0

«ShowDialog() блокирует код и не продолжается до тех пор, пока форма не будет закрыта». спасибо за это, я не знал об этом и узнал от вас 1-й. – Bogdan

Смежные вопросы