2013-07-22 3 views
0
Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form_Login()); 

После входа в систему Я хочу сделать новую форму Какие обнаружились после Логин Основной формой и закрыть текущую формуЗакрыть Форма заявки

Я Пытался

This.Hide(); 

и он просто Hide The Form Но это еще Running On Task Manager,

И я Пробовал

This.Close(); 

Это закрывает всю заявку, потому что форма Form_Login является основной формой

ответ

2

Возврат DialogResult после закрытия формы Form1. Используйте это значение в Main(), чтобы определить, следует ли открывать Form2 или нет. Что-то вроде этого.

В Form1, возможно, в обработчике нажатия кнопки:

this.DialogResult = DialogResult.OK; 
this.Close(); 

В Program.cs:

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
var form1 = new Form1(); 
Application.Run(form1); 

if (form1.DialogResult == DialogResult.OK) { 
    Application.Run(new Form2()); 
} 

Если Form1 закрывается без установки его DialogResult в DialogResult.OK, ваше приложение будет выходить. Если ваш Form1 закрывается и его DialogResult установлен в DialogResult.OK, тогда откроется Form2.


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

Вот один подход.

Создать перечисление, которое описывает результат вашего экрана входа в систему:

public enum LogonStatus { NoLogon, UserA, UserB }; 

На экране входа в систему создать свойство для сохранения результата входа:

public LoggedOnUser User { get; private set; } 

В форме входа присвоить значение к операции входа в систему и закройте форму:

LogonResult = LogonStatus.UserA; // UserA logged in, for example. 
this.Close(); 

В главном режиме вход в систему форма, изучить LogonResult proeprty форме и обрабатывать результат:

static void Main() { 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 

    var loginForm = new Form_Login(); 
    Application.Run(loginForm); 

    if (loginForm.LogonResult == LogonStatus.NoLogon) { 
     // Do something because there was no logon, or do nothing here and let your app exit. 

    } else { 
     // Launch your application form, passing in the logged on user. 
     Application.Run(new AppForm(loginForm.LogonResult)); 
    } 
} 

Этот пример показывает, передавая LogonStatus конструктору ваши AppForm «ы, чтобы адаптировать его пользователь вошел в систему.

С учетом сказанного, однако, вы должны знать, что это не лучший способ сделать это. Более гибкое и надежное решение предполагает использование служб каталогов Windows.

+0

Идея Okai Ur очень хорошая, но у меня есть роль для каждой учетной записи, если эта роль = 1 открытая форма 1, если role = 2 открытая форма 2 и т. Д. –

+0

@MuhammedSalah 'DialogResult' - это просто свойство' Form'.Вы можете создать свое собственное свойство (возможно, типа Enumerated), которое указывает «Роль», получить его в «Main» и загрузить соответствующую форму. Дайте мне знать, если вы хотите, чтобы я привел пример ... –

+0

Дайте мне пример Пожалуйста, @JayRiggs –

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