single.php

C# WinUI 3アプリでウィンドウの最大化・最小化ボタンを無効にする手順

C# WinUI 3アプリを作っていく途中で、躓いた部分を備忘録的に投稿します。今回はXamlで作成したフォームの最大化・最小化ボタンを無効にする手順です。

Xamlフォームの最大化・最小化ボタン

WinUI 3プロジェクトでは、メインウィンドウがXamlで作成て設定されています。

WinFormsのようにプロパティ画面でタイトルバーの各種ボタンの変更ができないようなので、ウィンドウハンドルを使ってコードから変更を行います。

準備として、メインウィンドウのハンドルを取得しておきます。クラス内で再利用できるように変数を宣言しておきます。

private Microsoft.UI.Windowing.AppWindow m_AppWindow;

ウィンドウのコンストラクター部分で次の様にウィンドウハンドルから取得します。

IntPtr hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
            Microsoft.UI.WindowId windowId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(hWnd);
            m_AppWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId);

最後に、OverlappedPresenterを使って、最小化ボタンなどの無効化を行います。

var olp = OverlappedPresenter.Create();
olp.IsMaximizable = false;
 //最大化ボタン
olp.IsMinimizable = false; //最小化ボタン
olp.IsResizable = false; //サイズ変更
olp.IsAlwaysOnTop = false; //常に最前面に表示
olp.IsModal= false; //モーダル・モードレス
m_AppWindow.SetPresenter(olp);

追加する場所は、下の画像をご覧ください。

まとめ

今回は、WinUI 3 アプリのタイトルバーに表示される最小化・最大化ボタンなどの変更方法を書きました。

WinFormsの時代とは違って、プロパティ画面で変更ができないため手動でコードを追加して変更します。

C#のWinUI 3アプリの最小化・最大化ボタンを変更したい場合の参考になれば幸いです。

スポンサーリンク

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

コメントを残す

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