leshqow
@leshqow
-l-

Лучшие практики. Как закрыть главную форму из дочерней?

После запуска программы появляется окно в поле ввода логина и пароля (LoginForms), при нажатии кнопки войти (если логин и пароль верные) открывается другое окно с функционалом программы, а окно с логином и паролем закрывается.

Какое решение здесь лучшее ? Мне на ум только приходит закрытие LoginForms после нажатия на кнопку войти.
  • Вопрос задан
  • 1201 просмотр
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
1 - не обязательно делать "логин" главной формой. можно стартовать главную форму скрытой, а форму логина дочерней, но показывать раньше, и дальше действовать в зависимости от успешности логина

2 - конкретно в WinForms можно отрабатывать вообще разные формы последовательно

using System;
using System.Windows.Forms;

namespace X
{
    internal static partial class Y
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(A = new fmA());
            // bla-bla-bla with login
            Application.Run(B = new fmB());
        }
        internal static fmA A;
        internal static fmB B;
    }
}


3 - для WPF не подскажу, но наверняка оба подхода можно рассмотреть и пробовать искать аналогии

ps для WinForms
Как закрыть главную форму из дочерней?
буквальный ответ - ни как, закрытие главной формы, это завершение Application.Run(A = new fmXXX()); и если вы не модифицирутете код Main- тогда это завершение программы
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FloydReme
@FloydReme
Пишу музыку и программирую
Я делал вот так
private void Login_Click(object sender, RoutedEventArgs e)
{
      this.Hide();
      MainPage mp = new MainPage();
      mp.Show();
}
Ответ написан
@GrWizard
Имхо, но я используйте самописный WindowManager, через который осуществляется управление окнами и вкладками в окна, если они там поддерживаются. Это очень старая проблема, окно это представление, согласно логике mvvm доступа из модели представления к окну быть не должно, по этому вы не можете открыть или закрыть окно из модели представления. Можно реализовывать всё на уровне представления, но кому это нужно? есть менеджер и он доступен для всех.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы