3

コントロールの幅に合わせて水平方向にサイズ変更する項目 (子コントロール) のリストを含むカスタム コントロールを作成しています。項目が多い場合 (またはコントロールのサイズが変更されて垂直方向の高さが十分でない場合) は、垂直スクロール バーが必要です。しかし、垂直スクロール バーが表示されると、子コントロールが突然幅が広すぎるため、水平スクロール バーが表示されます。

コントロールの配置を手動で制御している (に依存しない) 場合、水平スクロール バーが必要でないときに表示されないようにする適切な方法は何AnchorStylesですか? (注: VScrollCompact Framework を使用しているため、プロパティを手動で制御することはできません。項目の最小幅がクライアント領域よりも広い場合、水平スクロール バーが正当に必要になります。)

4

2 に答える 2

2

子コントロールに必要な幅を計算するときは、垂直スクロールバーの幅を考慮に入れてください。

System.Windows.Forms.SystemInformation.VerticalScrollBarWidth
于 2011-03-06T17:29:08.090 に答える
2

同様の状況で私がしたことは、リストにアイテムを追加するたびに、スクロールバーが表示されているかどうかを検出し、幅を手動で調整したことです。

スクロールバーが表示されているかどうかを検出するために私がしたことは、次のいずれかでした。

  1. WS_VSCROLLのテストは、GetWindowLong()を介して P/Invoke を介してコントロールに設定されました。
  2. 垂直スクロール バー コントロールのコントロールの子をスキャンします。

どちらが正しいかは、コントロールがスクロール バーをどのように処理するかによって異なります。

また、これは CF ではなく Windows で行われたため、これがまったく同じように機能するかどうかはわかりません。

于 2011-03-06T19:20:29.420 に答える