10

デスクトップアプリケーションが最大化されないようにしたい。タイトルバーをダブルクリックするか、キーボードのWindows +上矢印をクリックするなどして、決して最大化されるべきではありません。- > MaximizeBoxMinimizeBox

の両方を無効にします。 -> WinForm のMaximumSizeMinimumSizeも設定します。Windows+上矢印 を押すと、Winフォームが画面の左上に移動します。つまり、最大化されます。だから、このようなことが起こらないようにする方法を教えてください...


4

9 に答える 9

14

ここでは、実際には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自体の一部であるウィンドウを含め、他のすべてのウィンドウで機能する場合は、おそらく機能するはずです。

于 2013-03-24T11:54:30.110 に答える
10

フォームにはMaximizeBox--と呼ばれるプロパティがあります。これをfalseに設定します。

2番目の質問に関しては、この質問を確認してください。WinFormsでキーボードショートカットを実装するための最良の方法についての回答です。

于 2012-11-14T14:51:43.833 に答える
6
this.FormBorderStyle = FormBorderStyle.FixedSingle;

そのコード行は、ユーザーがウィンドウのサイズを変更できないようにします。

それに加えて、最大化ボックスを非表示/無効にし、それがあなたが求めたことを実行するはずです。

最大化ボックスを無効にするには、これを使用します

this.MaximizeBox = false;

最大化ボックスを非表示にするには、これも使用します

this.MinimizeBox = false;

MaximizeとMinimizeがfalseに設定されている場合、ボタンは消えます。

于 2012-11-14T15:55:20.773 に答える
2

MaximumSizeをサイズ(またはあるサイズ)と等しく設定すると、少なくともウィンドウが全画面表示になるのを防ぐことができます。それはまだ左上隅にスナップしますが、それでも少なくともウィンドウであり、正しく見えます-プログラムの代わりにWindowsが愚かであるように。

于 2014-04-10T03:42:47.600 に答える
2

次の設定を行うことで、ウィンドウが左上隅にスナップするのを防ぐことができます。

private void toolbox_Move(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Normal;
}

フォームの移動イベントで。

于 2015-03-23T16:59:26.503 に答える
1

「MaximumBox」という名前のFormクラスのプロパティがあり、フォームのプロパティウィンドウでFalseを設定する必要があります...これにより、実際にはフォームが最大化されなくなります...フォームを制御する場合も同様です。 「MinimumSize、MaximumSize」などのプロパティで操作できるサイズ。値を自由に設定したり、MaximumSizeChangedイベントとMinimumSizeChangedイベントのイベントハンドラーを作成したりできます。

于 2012-11-14T15:06:06.867 に答える
1

ウィンドウまたはアプリケーションがアクティブ化されている場合はRegisterHotKeyWin+ Upを試行し、非アクティブ化されている場合はこのホットキーの登録を解除できます。それ以上の処理を防ぐために、ホットキーをキャッチして適切な値を返す必要があります。

WM_ACTIVATEAPP、、を見てWM_ACTIVATEくださいWM_NCACTIVATE。1つ目は、すべてのウィンドウでWin+UPを無効にする場合に使用できます。

于 2015-06-26T14:58:58.333 に答える
1

formborderstyleをfixedsingleに設定します

Maximizebox=false

maximumsizeをwinformのデフォルトサイズのサイズに設定します

例:size(646,385)の場合、maximumsize(646,385)を設定します

于 2020-01-08T04:35:06.023 に答える
0

できることの1つは、MaximumSizeとMinimumSizeを同じ値に設定することですが、0,0には設定しません。

于 2019-02-01T02:00:30.743 に答える