上記の私のコメントから(ここでは本当に問題のようです):
Winforms(およびGDI一般的なGDI)は、16ビット範囲外の座標を使用しようとする場合、しばしば予測不可能に動作します。それを避けるようにしてください。考えられる問題の範囲では、まったく描かれていないもの、予期しないコード位置などでのオーバーフローエクセプトがあります。
質問
ドキュメントを編集できるWinFormsアプリケーションがあります。各ドキュメントは章で構成されており、各章にはRTFブロックのコレクションがあります。 RTFブロックはaにロードされます PanelControl
使用 Dock = DockStyle.Top
.
問題は、章の総高さが大きくなりすぎると(> 32768ピクセルを推定)、下のブロックが適切にドッキングされていないことです。問題を分離しようとしたとき、私はこれが、 LabelControl
.
私が試したことは、ような方法です Refresh()
, Invalidate()
と PerformLayout
: :彼らはそうします いいえ 問題を解決します。
何 します ヘルプはフォームのサイズを変更しています。その後、すべてのコントロールが正しくレイアウトされます。
フォームをサイズ変更せずにこれを解決する方法について誰かが手伝うことができますか?
添付されています シンプルなデモプロジェクト それは問題を示しています。
解決
上記の私のコメントから(ここでは本当に問題のようです):
Winforms(およびGDI一般的なGDI)は、16ビット範囲外の座標を使用しようとする場合、しばしば予測不可能に動作します。それを避けるようにしてください。考えられる問題の範囲では、まったく描かれていないもの、予期しないコード位置などでのオーバーフローエクセプトがあります。
他のヒント
このレイアウトを変更することを決定することができる場合は、ある種のページネーションまたは崩壊したRTFブロックをメニューに表示し、電流のみを表示するドキュメントの章を表示/編集することについて、別のアプローチを取ることをお勧めします。
ご覧のとおりです。高さの値が整数の16ビット値であるという意味があります。画面はこれよりもはるかに小さいです。パネルの高さがこのような大きさに増加するにつれて。スクロールバーを使用することは非常に賢明になることがわかります。それは良いことではありません。
サイズ2倍、3x、5xのスクロールのコンテンツは、ユーザーが使用できます。ただし、最適な場合には、少なくとも高さ(〜32768)のコンテンツをスクロールする(最大化された良好な解像度モニターを最大化した状態で)、ウィンドウのサイズは非常に不快です。
さらに、「もの」のコレクションを増やす「物」を見つける脳の困難により、ユーザーの生産性が低下すると思います。