2009-08-20 26 views
4

私は非常に基本的なグリッドコントロールを作成しています。私はScrollableControlから派生することに決めました(これはDataGridViewがやっているようなものです)。"仮想" ScrollableControlを作成しますか?

私は自分のセルを描画するために多くのコードを用意していますが、ScrollableControlの "スクロール可能な"部分をどのように利用するかを理解するのが難しいです。 ScrollableControlは他のコントロールのコンテナになるように設計されており、コントロールの範囲外にある子コントロールの周りには「自動」スクロール機能が配置されているようです。

私はちょうどコントロールの "バーチャル"領域を設定して、正しいサイズのスクロールバーを得ようとしています。次に自分の "ビュー"を作成するコントロールに自分の描画を行います。

私は基本的にこれに非常に不満です。これを動作させる最も簡単な方法は何ですか?

答えて

9

AutoScrollMinSize propertyを設定して、レンダリングする領域をコントロールに指示する必要があります。

+0

今すぐ取得します。うわー、それはかなり直感的ではありません。 MinSizeは実際には最大サイズです...または仮想領域のサイズです... –

+0

命名についてもっと同意できませんでした。確かに、それがその名前から何をするのかはわかりません。 –

+0

ありがとう、これは私に多くの時間の全体の地獄を救った。 – ChandlerPelhams

1

私が知る限り、子のScrollableControlの子は、あなたの仮想表面の右下の境界に位置している必要があります。おそらく、1ピクセルの透過画像を持つPictureBoxができます。

FYI SourceGridをデザインインスピレーション(MVCパターンをうまく利用しています)で見たいと思うかもしれません。あるいは、あなたの問題を解決するかもしれません。

EDIT:Doh!私はマイケルの解決策が正しい/より良いと確信しています。しかし、あなたはまだSourceGridを見たいかもしれません。

0

あなただけのスクロールバー:)

-2

フリップしてはならないとのパネルにそれをダンプすることができ、あなたが求めているカスタマイズのレベルは、WPFではるかに適切かつ将来性です。あなたのアプリケーションをforkliftingしても問題がなければ、コントロールをビルドしてWinFormsでホ​​ストすることは可能です。

+2

2つの問題があります。私のコードはWindows 2000上で動作する必要がありますが、WPFはWin2kでは動作しません。今はWPFの学習に投資する時間がありません。 –

関連する問題