none
最小化ボタンを非表示にしたい RRS feed

  • 質問

  • StartupUriで起動したWindowの最小化ボタンを非表示にできないでしょうか。ダイアログボックスを作成していて、ShowInTaskbarをfalseにしたとき、最大化ボタンと閉じるボタンだけの表示が必要になったからです。

    2010年5月3日 13:41

回答

  • 最小化ボタンだけ非表示ってのは、Windows の仕様上、できないんじゃないでしょうかね。少なくとも Vista では不可能みたいです。最大化ボタンとセットで非表示は可能ですけど。MaximizeBox/MinimizeBox プロパティが用意されている WinForm の Form クラスでも、片方だけ false にした場合はそのボタンが非アクティブになるだけです。WPF の ResizeMode.CanMinimize でも「両方表示されるけど最小化ボタンだけ有効」って書かれてるし。

    無効化だけでいいのなら、WindowInteropHelper を使って Window のハンドルを手に入れ(ただし SourceInitialized イベント以降限定)、Win32API の GetWindowLong・SetWindowLong を使って WS_MINIMIZEBOX をウィンドウスタイルから削除する、という手がありますが。ついでにこの辺を MinimizeBox 依存関係プロパティとして実装すればバインディングで処理することもできますね。

    • 回答としてマーク タッカ 2010年5月3日 23:24
    2010年5月3日 15:30

すべての返信

  • 最小化ボタンだけ非表示ってのは、Windows の仕様上、できないんじゃないでしょうかね。少なくとも Vista では不可能みたいです。最大化ボタンとセットで非表示は可能ですけど。MaximizeBox/MinimizeBox プロパティが用意されている WinForm の Form クラスでも、片方だけ false にした場合はそのボタンが非アクティブになるだけです。WPF の ResizeMode.CanMinimize でも「両方表示されるけど最小化ボタンだけ有効」って書かれてるし。

    無効化だけでいいのなら、WindowInteropHelper を使って Window のハンドルを手に入れ(ただし SourceInitialized イベント以降限定)、Win32API の GetWindowLong・SetWindowLong を使って WS_MINIMIZEBOX をウィンドウスタイルから削除する、という手がありますが。ついでにこの辺を MinimizeBox 依存関係プロパティとして実装すればバインディングで処理することもできますね。

    • 回答としてマーク タッカ 2010年5月3日 23:24
    2010年5月3日 15:30
  • Win32API と依存関係プロパティなどで Window を作成してみます。ありがとうございます。
    2010年5月3日 23:46