0
このコードを使用して、標準のWindowState(サイズの大きい境界線スタイル)と最大化(境界線スタイルなし)を切り替えます。Winform ClientSizeは、枠なしで最大化した後の画面サイズを超えています
if (WindowState != FormWindowState.Maximized)
{
WindowState = FormWindowState.Maximized;
FormBorderStyle = FormBorderStyle.None;
}
else
{
WindowState = FormWindowState.Normal;
FormBorderStyle = FormBorderStyle.Sizable;
}
また、変更後のフォームの一部のコントロールのレイアウトを動的に調整しています。 ClientSize.Width
とClientSize.Height
の値が、最大化/境界なし状態(クライアントサイズ:1936x1216、実際のモニタ解像度:1920x1200)で実際のモニタ解像度を超えています。その結果、いくつかのコントロールが範囲外に配置されます。
フォームが画面の制限を超えていないことを確認する簡単な方法はありますか(手動で画面のサイズを確認し、そのサイズに強制的に変更する以外)
は、最大許容ウィンドウサイズがモニタサイズプラスボーダーです。これにより、ウィンドウを最大化すると、境界線ではなくクライアント領域のみが表示されます。したがって、境界線を削除すると、必然的にクライアント領域が大きくなりすぎることになります。このコードを削除するだけで、必要ありません。あなたのタスクバー、質問に属している詳細をオーバーラップする場合は、WM_GETMINMAXINFOメッセージを処理する必要があります。 –
フィードバックありがとうございます。私はタスクバーの問題はありません。最初に境界線をオフにすると、望ましい動作が得られることがわかりました。 – thephez
このコードには意味がありません。これを削除してください。FormBorderStyleを変更すると、多くの望ましくない副作用が生じる可能性があります。あなたが知ったように。 –