デスクトップアプリケーションが最大化されないようにしたい。タイトルバーをダブルクリックするか、キーボードのWindows +上矢印をクリックするなどして、決して最大化されるべきではありません。-
> MaximizeBoxとMinimizeBox
の両方を無効にします。
-> WinForm
のMaximumSizeとMinimumSizeも設定します。Windows+上矢印
を押すと、Winフォームが画面の左上に移動します。つまり、最大化されます。だから、このようなことが起こらないようにする方法を教えてください...
9 に答える
ここでは、実際には2つの完全に別個の問題が働いています。確かに、これらは機能的な観点からは基本的に同じように見えますが、実装モデルの観点からは(Windows自体が自然に使用するように)無関係です。
他の人が答えているように、MaximizeBox
プロパティをに設定することで、フォームが最大化されるのを防ぐことができますfalse
。これにより、フォームの基になるウィンドウのWS_MAXIMIZEBOX
スタイルが削除され、ウィンドウマネージャーがウィンドウを最大化できないようになります。ウィンドウのキャプションバーの最大化ボックス(最小化ボックスと閉じるボックスの間にあるボックス)を無効にし、ウィンドウ/システムメニューの[最大化]オプション、および忘れてしまった可能性のあるウィンドウを最大化するその他の方法を無効にします。
Winただし、これは+↑キーボードショートカットとは関係ありません。これは、ウィンドウを画面の端にある魔法の位置にドラッグするのと同じようにAeroSnapを呼び出します。ウィンドウマネージャーは、バグまたはAero Snapの機能の結果であるかどうかにかかわらず、他の方法では最大化されるべきではないウィンドウを効果的に「最大化」することができます。プロパティを設定してMaximizeBox
もこれには影響しないため、ユーザーがこの方法でウィンドウのサイズを変更できないようにする場合は、ウィンドウに対するAeroSnapの効果を無効にする必要があります。
残念ながら、ウィンドウごとまたはプロセスごとにプログラムでAero Snapを無効にする方法はありません(少なくとも私の知る限りではありません)(この関連する質問も参照してください)。ユーザーがAeroSnapを有効にしている場合は、ユーザーがその動作やアプリケーションがAeroSnapを改ざんすることを望んでいないと想定できます。できることは、ウィンドウのサイズ変更を完全に無効にすることだけです。WinFormsでは、FormBorderStyle
プロパティを、、、またはのいずれかにFormBorderStyle.FixedSingle
設定FormBorderStyle.Fixed3D
することでこれを行いますFormBorderStyle.FixedDialog
。それでもウィンドウを他の方法でサイズ変更できるようにしたい場合は、それを手動で処理するコードを作成する必要がありますが、これは特に簡単な作業ではありません。
したがって、これが本当に必要かどうかを慎重に検討することをお勧めします。他のすべての最大化不可能なウィンドウは、MaximizeBox
プロパティを設定する(またはUIフレームワークで同等の処理を行う)だけでこれを実現します。つまり、AeroSnapを介して効果的に最大化できます。これが、Windows自体の一部であるウィンドウを含め、他のすべてのウィンドウで機能する場合は、おそらく機能するはずです。
フォームにはMaximizeBox
--と呼ばれるプロパティがあります。これをfalseに設定します。
2番目の質問に関しては、この質問を確認してください。WinFormsでキーボードショートカットを実装するための最良の方法についての回答です。
this.FormBorderStyle = FormBorderStyle.FixedSingle;
そのコード行は、ユーザーがウィンドウのサイズを変更できないようにします。
それに加えて、最大化ボックスを非表示/無効にし、それがあなたが求めたことを実行するはずです。
最大化ボックスを無効にするには、これを使用します
this.MaximizeBox = false;
最大化ボックスを非表示にするには、これも使用します
this.MinimizeBox = false;
MaximizeとMinimizeがfalseに設定されている場合、ボタンは消えます。
MaximumSizeをサイズ(またはあるサイズ)と等しく設定すると、少なくともウィンドウが全画面表示になるのを防ぐことができます。それはまだ左上隅にスナップしますが、それでも少なくともウィンドウであり、正しく見えます-プログラムの代わりにWindowsが愚かであるように。
次の設定を行うことで、ウィンドウが左上隅にスナップするのを防ぐことができます。
private void toolbox_Move(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
フォームの移動イベントで。
「MaximumBox」という名前のFormクラスのプロパティがあり、フォームのプロパティウィンドウでFalseを設定する必要があります...これにより、実際にはフォームが最大化されなくなります...フォームを制御する場合も同様です。 「MinimumSize、MaximumSize」などのプロパティで操作できるサイズ。値を自由に設定したり、MaximumSizeChangedイベントとMinimumSizeChangedイベントのイベントハンドラーを作成したりできます。
ウィンドウまたはアプリケーションがアクティブ化されている場合はRegisterHotKeyWin+ Upを試行し、非アクティブ化されている場合はこのホットキーの登録を解除できます。それ以上の処理を防ぐために、ホットキーをキャッチして適切な値を返す必要があります。
WM_ACTIVATEAPP
、、を見てWM_ACTIVATE
くださいWM_NCACTIVATE
。1つ目は、すべてのウィンドウでWin+UPを無効にする場合に使用できます。
formborderstyleをfixedsingleに設定します
Maximizebox=false
maximumsizeをwinformのデフォルトサイズのサイズに設定します
例:size(646,385)の場合、maximumsize(646,385)を設定します
できることの1つは、MaximumSizeとMinimumSizeを同じ値に設定することですが、0,0には設定しません。