#author("2021-09-16T09:17:44+09:00","","") #navi(../) * WPFアプリ(.NET Framework)で起動時にMainWindowを制御する方法 [#g45a6ba0] プロジェクトの作成で、WPFアプリを選択し、ビルドすると自動生成されたMainWindowが表示されます。~ このMainWindowの表示をさせない(=プログラムで制御)する方法を以下に記します。 ウインドウ表示前に何かの処理をして表示・非表示を制御するようなときに使えると思います。 #contents #htmlinsert(windev-top.html) * 動作確認環境 [#ud097d1a] - Windows 10 ver. 21H1 - Visual Studio 2019 -- WPFアプリ(.NET Framework) - .NET Framework 4.7.2 * 修正箇所 [#o1f422c3] 修正箇所を以下に記します。 ** C# [#fd9ce6df] XAML,C#ソースを修正します。 *** App.xaml [#n5270936] StartupUriを削除します。 - 修正前 <Application x:Class="NotDispMainWindowCS.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:プロジェクト名" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> -修正後 <Application x:Class="NotDispMainWindowCS.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:プロジェクト名"> <Application.Resources> </Application.Resources> </Application> *** App.xaml.cs [#q6a9e7a9] - 修正前 /// <summary> /// App.xaml の相互作用ロジック /// </summary> public partial class App : Application { } - 修正後~ OnStartup, OnExitを実装します。~ これにより、OnStartupでウインドウの表示制御をw.Show()のようにできるようになります。~ 何か判定で終了させる場合は、base.Shutdown を呼び出せばよいでしょう。 /// <summary> /// App.xaml の相互作用ロジック /// </summary> public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var w = new MainWindow(); w.Show(); } protected override void OnExit(ExitEventArgs e) { base.OnExit(e); } } ** VB(Visual Basic) [#y00b28ed] XAML,VBソースを修正します。 *** Application.xaml [#v8989a73] StartupUriを削除します。 - 修正前 <Application x:Class="Application" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:プロジェクト名" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> -修正後 <Application x:Class="Application" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:プロジェクト名"> <Application.Resources> </Application.Resources> </Application> *** Application.xaml.vb [#u030eb26] - 修正前 Class Application ' Startup、Exit、DispatcherUnhandledException などのアプリケーション レベルのイベントは、 ' このファイルで処理できます。 End Class - 修正後~ OnStartup, OnExitを実装します。~ これにより、OnStartupでウインドウの表示制御をw.Show()のようにできるようになります。~ 何か判定で終了させる場合は、base.Shutdown を呼び出せばよいでしょう。 Class Application Protected Overrides Sub OnStartup(e As StartupEventArgs) MyBase.OnStartup(e) Dim w = New MainWindow() w.Show() End Sub Protected Overrides Sub OnExit(e As ExitEventArgs) MyBase.OnExit(e) End Sub End Class 以上、WPFアプリでMainWindowの表示/非表示をプログラムで制御する方法でした。 #htmlinsert(windev-btm.html)