C# スクロールバーを抜いた領域
内職でプログラムを組んでいたら
スクロールバーに悩まされました。
パネルにラベルを縦に羅列するプログラムなのですが
スクロールバー表示前の幅で調節していたものを
さらにAnchorで自動調節させるようにしていたため
スクロールバー表示後に表示されたラベルは
クソ正直にスクロールバーを無視したサイズで描画され
それまでに描画したラベルはAnchorで自動調節されるため
案の定幅がでこぼこに。
スクロールバーの幅をどこかで取得してやるのかなとあちこち調べましたが
全然出てこなくて数十分悩みました。
ところが、プロパティやらメソッドをあちこち見ていたら漸くみつけました。
ClientSize
これでクライアントが使用する領域が取得できるようです。
なのでClientSize.Widthでスクロールバーを抜いたサイズを取得することで
何とか解決。うむ、他にバグも見当たらないし、それなりに使えるものに仕上がりました。
作っていたのは、自作のリストボックスです。
指定した数のみ表示し、それ以外は別ページのように表示できるもの。
検索サイトの検索結果をイメージしてみました。
まだ本格的なテストはしていないので、もう少し改良が必要かもですが。
それにしても、今になって内職にまわしてよかったなと思いました。
まさかまる一日かかるなんて思わなくてw
早く終わったらRemotingも試したかったのですが、それはまた今度の機会に。