0

У меня есть 3 окна

1 - Главное 2 и 3 модальные.

По умолчанию открывается окно 1 (с авторизацией)

Там вводим логин и пароль, и открывается уже другое окно 2 или 3 в зависимости какой логин или пароль. И при этом 1 окно при открытии другого скрывается.

В окнах 2 и 3 есть Frame, в них есть кнопка код кнопки вот такой

MessageBoxResult result = MessageBox.Show("Вы уверены что хотите выйти из учётной записи?", "Информация",
   MessageBoxButton.YesNo,
   MessageBoxImage.Question);


    foreach (Window window in App.Current.Windows)
    {
        if (result == MessageBoxResult.Yes)
        {                    
            if (window is AuthorizationWindow)
            {

                TeacherStart teacher = new TeacherStart(1);                       
                StartSchoolboy schoolboy= new StartSchoolboy(1);


                AuthorizationWindow authorization = new AuthorizationWindow();
                authorization.Show();
            }
        }
     break;

И он срабатывает только 1 раз.

То есть если мы зашли под пользователем ... и открылось 2 окно, то код будет работать.

И если при этом мы вышли из 2 окна, и вводим логин и пароль и входим в 3 окно, то уже

окно не скрывается с таким же кодом, а только отображается окно 1

 public StartSchoolboy(int exit = 0)
    {
        InitializeComponent();
    if(exit == 1)
    {
        Close();
    }
}


public TeacherStart(int exit = 0) { InitializeComponent();

        if (exit == 1)
        {
            Close();
        }
    }

Naik
  • 51
  • Какой же вы ерундой занимаетесь, ей богу, смотрю каждый ваш вопрос и думаю, "ну почему так, зачем человек сидит на WPF, если делает такое..?". Вот давайте по порядку, WPF это привязки, XAML, почему вы это не используете? Почему вы почти все пишете в коде? Далее, Frame - это ужаснейший компонент, который дает больше мороки, чем решение поставленной задачи. Затем, че за int exit? Почему это int а не bool, может быть больше 1 значение? Думаю нет... А не кажется странным то, что вы открываете окно, чтобы потом его сразу закрыть (если 1)? Я думаю да. А открывать все окна, чтоб оставить одно? – EvgeniyZ May 03 '22 at 11:12
  • @EvgeniyZ, я в окно передаю параметр , если он равен 1 то окно закрывается что тут не понятного ?

    Привязкой пользуюсь там где знаю как её использовать. В коде пишу не всё, а только то что через xaml не знаю как сделать.

    – Naik May 03 '22 at 11:18
  • что тут не понятного ? - ну вы сами свой код посмотрите и поймите, что увидите? Допустим public TeacherStart(int exit = 0) - вы инициализируете класс, передав туда число, если оно 1, то после инициализации (расстановки всех компонентов в XAML) вы его закрываете. Ок, а что закрываете? То, что еще не было открыто? Ведь показ окна, это Show метод, который вызывается после конструктора (new TeacherStart(1).Show()), вот посмотрите на этот код внимательно, что я дал, после new идет конструктор, там сразу закрытие, а после уже показ окна. Ну не кажется, что закрытие тут бесполезно? – EvgeniyZ May 03 '22 at 11:27
  • 2
    Посмотрите на код перебора окон if (window is AuthorizationWindow), если окно авторизации, то создаем 2 новых окна (но не показываем), затем создаем окно авторизации и показываем его. Уверены в логике? где знаю как...через xaml не знаю как - вот очень большой совет, начните в этом разбираться, а не задавать такие вот вопросы. Не знаете как сделать в XAML, спросите, поможем, но сейчас у вас костыли на костылях, вы используете WPF как WinForms, зачем тогда он вам, если вы не используете его по максимуму? Поизучайте этот ответ. – EvgeniyZ May 03 '22 at 11:32

0 Answers0