Почему я не могу вызвать 'new Window (). ShowDialog ()' 2 раза при запуске приложения? - PullRequest
4 голосов
/ 15 июля 2011

Вот код XAML:

<Application x:Class="WpfApplication2.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup" />

Код поддержки:

using System.Windows;

namespace WpfApplication2
{
    public partial class App : Application
    {
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            new Window().ShowDialog();
            new Window().ShowDialog();
        }
    }
}

Окно показывает только один раз, а затем приложение закрывается. Почему ??

ОБНОВЛЕНИЕ: Я знаю, что окна должны появляться соответственно. Но после закрытия первого окна второе не отображается вообще

Ответы [ 5 ]

5 голосов
/ 15 июля 2011

Попробуйте это

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        var w1 = new Window();
        var w2 = new Window();

        w1.ShowDialog();
        w2.ShowDialog();
    }

Вставить комментарий формы:

Я думаю, что когда вы закрываете первое окно, приложение проверяет, есть ли другие окна, и не находит их (поэтому приложениезакрывается), так как второе окно не было создано

0 голосов
/ 15 июля 2011

Возможно, вы закрываете все приложение в коде, используемом для закрытия окна 1. Если вы используете что-то вроде Environment.Exit(0);, это может быть проблемой.

0 голосов
/ 15 июля 2011

Для этого вы можете использовать цикл for.Но я понятия не имею, почему не могу позвонить напрямую.

       for (int i = 0; i < 2; i++)
       {
            new Window().ShowDialog();
       }
0 голосов
/ 15 июля 2011

Прав ли я сказать, что это будет показывать два окна последовательно, а не одновременно? Когда window1 закрыто, window2 автоматически открывается, так как вызов ShowDialog (), который открывает окно, затем устанавливает фокус на него и не открывает другое, пока window1 не закроется?

0 голосов
/ 15 июля 2011

ShowDialog не позволит вам создать ту же форму, если она не закрыта.

Это разница между модальной и немодальной формой.

Я думаю, что WPF по той же причине ...

и вы можете увидеть ↓

Отображение модальных и немодальных форм Windows

UPDATE:

Пройди тест по ответу Stecya , и он отлично работает ...

protected override void OnStartup(StartupEventArgs e)
    {
        var w1 = new Window();
        var w2 = new Window();

        w1.ShowDialog();
        w2.ShowDialog();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...