超不定期雑記

~プログラムとかサイエンスとかいろいろと~

目次

Blog 利用状況

書庫

スクロールバーの幅

今担当しているプロジェクトでは、グリッドを作成するのにグレープシティの FlexGrid.NET2.0J (4.0 に更新しようとしたら稟議が降りなかったorz)を使用しています。
要求仕様上、二つのグリッドを連携させる必要が出てきたんですが、片方のスクロールバーの表示状態によっては、もう片方のグリッドが想定通りに連動しない場合がありました。
で、それを回避するためにはスクロールバーの幅がわかればいいんですが、 DOBON.NET にそのものずばりの方法が書かれていましたので、メモ代わりに転載します。

// 水平スクロール バーの高さ (ピクセル単位)
Console.WriteLine("HorizontalScrollBarHeight:{0}",
    SystemInformation.HorizontalScrollBarHeight);

// 垂直スクロール バーの幅 (ピクセル単位)
Console.WriteLine("VerticalScrollBarWidth:{0}",
    SystemInformation.VerticalScrollBarWidth);

SystemInformation クラスって、いろいろな情報を取り出せて便利ですね。

ところが、FlexGrid ってスクロールバーが小さくなることがなかったっけ? とか、そもそもどちらのグリッドにもスクロールバーが表示されないケースの対応はどうしようとか考えていたら、もっとスマートな方法がありました。

// C1.Win.C1FlexGrid.C1FlexGrid fgdGrid; として、

// 水平スクロールバーの高さ
Console.WriteLine("HorizontalScrollBarHeight:{0}",
    fgdGrid.Height - fgdGrid.DisplayRectangle.Height);

// 垂直スクロールバーの幅
Console.WriteLine("VerticalScrollBarWidth:{0}",
    fgdGrid.Width - fgdGrid.DisplayRectangle.Width);

コントロールのサイズと表示領域の矩形は取得できるんですから、そこから計算した方が早いですね。

……そういえば、ボーダーの取り扱いってどうなるんだろう?

投稿日時 : 2009年1月8日 14:09

Feedback

No comments posted yet.
タイトル  
名前  
Url
コメント