C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで、全画面モードを利用する際に[TryEnterFullScreenMode]メソッドで例外が発生する場合の対処法です。
実行時にCOMExceptionエラーが発生
例えば、WinUI3プロジェクトの[myButton_Click]イベントに次のコードを編集します。
private void myButton_Click(object sender, RoutedEventArgs e)
{
myButton.Content = "Clicked";
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
}
画面内のボタンをクリックした際に、全画面表示への切り替えが行われるはずですが、実際に実行してみるとCOMExceptionエラーが発生してしまいます。
原因を調べてみると[TryEnterFullScreenMode]メソッドではなく[GetForCurrentView]でエラーになっているようです。
SetPresenterメソッドで代用可能
WinUI3で全画面表示を行うには[SetPresenter]メソッドに[AppWindowPresenterKind.FullScreen]を入力でも代用が可能でした。
具体的には、次のコードに変更します。
private void myButton_Click(object sender, RoutedEventArgs e)
{
myButton.Content = "Clicked";
Microsoft.UI.Windowing.AppWindow AppWindow;
IntPtr hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
Microsoft.UI.WindowId windowId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(hWnd);
AppWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId);
AppWindow.SetPresenter(AppWindowPresenterKind.FullScreen);
}
実行すると、ボタンをクリックして全画面モードに移行します。
元に戻す場合には、[AppWindowPresenterKind.FullScreen]を入力します。
AppWindow.SetPresenter(AppWindowPresenterKind.Default);
まとめ
今回は短い記事ですが、Visual StudioのWinUI3プロジェクトで、全画面モードに移行したい場合に、[TryEnterFullScreenMode]メソッドで例外が発生する場合の対処法を紹介しました。
実行時にCOMExceptionエラーになってしまうため、[SetPresenter]メソッドに[AppWindowPresenterKind.FullScreen]を入力することで代用が可能です。
WinUI 3アプリの[TryEnterFullScreenMode]メソッドでエラーになってしまう人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。