[ad_1]
コードを使用して丸みを帯びたフォームを描画します
this.FormBorderStyle = FormBorderStyle.None; Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 20, 20));
最大化関数を使用する場合、フォームのサイズは同じままです
最大化機能を動作させるには何を変更する必要がありますか?
私が試したこと:
this.WindowState = FormWindowState.Maximized;
解決策 1
Region プロパティが設定されている場合、幅と高さは無視され、オーバーライドされます。
したがって、最大化すると、システムは幅と高さを変更しますが、表示には事前設定された領域を引き続き使用します。 (それを変更することはできません。他に何をしているのかわかりません。)
最大化するときは領域を null に戻し、復元するときは必要なサイズに戻します。
ただし、最大化されたフォームでは角が丸くならないことに注意してください。モニター サーフェス全体を占有します。
解決策 2
最大化されたフォームの角を丸くしたい場合、またはユーザーがフォーム サイズ ハンドルをドラッグした場合、フォーム サイズまたは WindowState の変更によってトリガーされるさまざまなイベントの 1 つまたは複数のハンドラーを実装する必要があります。
ハンドラーで、WindowState プロパティを使用して、フォームが最小化、最大化、通常のいずれであるかを確認できます。
ResizeBegin、ReSize、ReSizeEnd、SizeChanged を見てください。 イベント。
これを正しく行うには、現在のリージョンをリセットし、現在のフォームの状態に基づいて新しいリージョンを計算する特別な関数が必要です。 フォームを DoubleBuffer する必要があります。
これは簡単なコードではありませんが、最小限の労力でオンラインで例を見つけることができます。
私たちはあなたのためにコードを書くつもりはありません: あなたが始めて、コードと特定の質問で戻ってきてください.
[ad_2]
コメント