【解決方法】丸められたフォームを最大化する C#


コードを使用して丸みを帯びたフォームを描画します

C#
 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 する必要があります。

これは簡単なコードではありませんが、最小限の労力でオンラインで例を見つけることができます。

私たちはあなたのためにコードを書くつもりはありません: あなたが始めて、コードと特定の質問で戻ってきてください.

コメント

タイトルとURLをコピーしました