2016-10-15 2 views
0

У меня есть Login Form, который проверяет роли во время входа в систему. Если роль Normal User, то это открытие Form1. Если роль Register, то это открытие Form2. После открытия Form1 или Form2 я закрываю форму для входа, используя this.close. Когда роль Normal User, это открытие Form1 и закрытие формы входа. Идеально, когда роль Register закрывает обе формы.Форма Закрыть Проблема в C#

Вот код.

if (ROLE != "Register") 
{ 
    Form1 form1= new Form1(); 
    if (ROLE == "Normal User") 
    { 
     form1.Show(); 
     this.Close(); 
    } 
    if (ROLE == "Bulk User") 
    { 
     form1.Show(); 
     this.Close(); 
    } 
} 
else 
{ 
    Form2 form2= new Form2(); 
    form2.Show(); 
    this.Close(); 
} 

Login Form и Form1 являются WPF Формы Хотя Form2 является форма

+1

Windows, можно ли изменить дизайн этого конкретного кода? Неправильная практика удаления родительской формы, то есть формы входа перед закрытием дочерних форм. Обращайтесь к вышеуказанной логике (закрытие формы входа и отображение формы1 или формы2) за пределами формы входа. Лучшим местом будет родитель формы входа. –

+0

@MukulVarshney, вы имеете в виду, что я не должен закрывать 'Login Form', пока мое приложение работает? –

+1

Я считаю, что вы должны переопределить 'OnStartup (StartupEventArgs e)' в вашем Appl.xaml, чтобы начать с LoginForm. – shadow

ответ

4

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

else 
{ 
     Form2 form2 = new Form2(); 
     form2.Show(); 
     this.Hide(); 
     form2.Closed += (s, args) => this.Close(); 
} 
+0

Не будет ли та же проблема влиять на форму1? – ChrisF

+1

Как уже упоминалось, форма 1 является формой wpf и работает корректно, поэтому я предложил только вторую форму. –

+0

@GevorgNarimanyan, должен ли я сделать form2 в WPF, чтобы правильно работать ??? –

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