#author("2021-09-16T09:17:44+09:00","","")
#navi(../)
* WPFアプリ(.NET Framework)で起動時にMainWindowを制御する方法 [#g45a6ba0]
プロジェクトの作成で、WPFアプリを選択し、ビルドすると自動生成されたMainWindowが表示されます。~
このMainWindowの表示をさせない(=プログラムで制御)する方法を以下に記します。
ウインドウ表示前に何かの処理をして表示・非表示を制御するようなときに使えると思います。
#contents
#htmlinsert(windev_ads_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_ads_btm.html)