2009-10-27 3 views
5

Я выполнил простые шаги, описанные в How to: Add a Splash Screen to a WPF Application, чтобы добавить заставку в мое приложение WPF. Когда я запускаю приложение, отображается всплывающее изображение, затем появляется главное окно, и изображение всплеска исчезает.Окно приложения WPF появляется поверх SplashScreen

Моя проблема заключается в том, что при появлении главного окна оно появляется поверх всплеска. Затем, когда изображение всплеска начинает исчезать, всплывающее изображение снова появляется вверх. Конечным результатом является то, что изображение всплеска исчезает в течение секунды, когда появляется главное окно.

Как я могу заставить главное окно появляться под заставкой, чтобы изображение заставки не исчезло?

ответ

1

Это не поведение по умолчанию, вы должны иметь некоторый код, который вручную фокусирует основное окно?

Это может быть проще просто отключить замирание вручную с небольшим количеством кода, как это:

_splash = new SplashScreen("LoadingScreen.png");

_splash.Show(false);

_splash.Close(TimeSpan.Zero);

+0

Я посмотрю, есть ли какой-то код, который делает фокус; это может быть от стороннего компонента. Так как я добавил заставку с помощью действия по созданию ресурса, как бы я мог получить доступ к нему, как вы это делали ...? –

+0

В файле app.cs объявляется глобальное поле «protected SplashScreen _splash;». В конструкторе есть первые две строки кода сверху. В вашем событии OnStartup в конце метода после завершения всей логики запуска вставьте последнюю строку кода выше. Это должно быть так. – Daniel

0

Не уверен, если это поможет, но если вы установите для владельца экрана Splash текущую форму, то это, возможно, может сделать трюк?

_splash.Owner = this; 

В противном случае вы можете посмотреть здесь:

Splash Screen Example

Это тоже может помочь.

6

В .NET 4.0 добавлен overload метод Show, который позволяет установить стиль окна WS_EX_TOPMOST в окне заставки. Показать заставку в коде так:

SplashScreen splash = new SplashScreen("SplashScreen.png"); 
splash.Show(autoClose: true, topMost: true); 

я называю, что от метода

protected override void OnStartup(StartupEventArgs e) 

в App.xaml.cs.

«SplashScreen.png» - это, конечно, идентификатор вашего изображения всплеска, встроенного в ресурсы приложения.

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