single.php

C# WinUI3 のTryEnterFullScreenModeで例外が発生する場合の対処法

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]メソッドでエラーになってしまう人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です