2011-01-13 19 views
10

時々、私はpictureboxに100x100と言うことができます。しかし、表示されるイメージは実際には100x400です。PictureBoxコントロールでスクロールバーを表示するにはどうすればよいですか?

ピクチャボックス自体のサイズを増やしたくありません。代わりに、私は垂直スクロールバー(または必要に応じて水平)を作成したいと思います。

ツールボックスにスクロールバーが見つかりませんでしたので、コードを作成する必要があります。しかし、どのように? 私は間違いなくツールボックスにスクロールバーが表示されていないかどうか疑問に思います。 (

答えて

19

を解雇されたが、それは、実際の仕事のように聞こえる。良い方法があります。

  1. フォームにPanelコントロールを追加し、AutoScroll propertyを "True"に設定します。これにより、スクロールバーに現在表示されている範囲外のコンテンツが含まれている場合、スクロールバーが自動的に表示されます。 .NET Frameworkは、コードの単一行を書くことなく、すべてのことをカバーします。

  2. PictureBoxコントロールをドラッグして、追加したばかりのPanelコントロール内にドロップします。Panelコントロールは、AutoScrollプロパティのおかげで、子コントロールの1つが可視領域より大きく、スクロールバーを表示することを検出します。ユーザーがスクロールバーを動かすと、表示されているPictureBoxの画像部分が自動的に調整されます。マジック。

PictureBoxAutoScrollプロパティを提供するものであるScrollableControl基底クラスから直接継承していないので、あなたがコンテナとしてPanelコントロールを使用する必要が理由です。)

+2

このソリューションを動作させるには、 'PictureBox'の 'PictureBox'プロパティを 'AutoSize'に設定しなければなりませんでした – Niroshan

+1

そして私は欲しいですPictureBoxをPanelにドッキングできないことに注意してください。 – miroxlav

2

画像ボックスには自動スクロールバーはありませんが、フォームにVScrollBar(およびHScrollBar)コントロールを追加し、画像スクロールを手動で別のオフセットで再描画することで手動で処理できますスクロールイベントは、私はあなたが別のスクロールバーコントロールを追加し、これでPictureBoxで絵が描かれているオフセットで自分Scrollイベントを同期可能性があるとします。

+1

私はこれを行うにはあまりにも怠惰です。 ;-) –

+0

あなたの方法はずっと高速ですが、スクロールバーを移動するとき、またはスクロールバーを移動するときに、画像をどのようにオフセットするかの欲求不満を楽しむことはありません。 – xpda

+0

私は欲求不満をしたくありません:(.......しかし良いアイデアを得ました。 – Voldemort

3

私はこれを試してみましたが、それはうまくいった。しかし、ピクチャボックスがパネルにドッキングされている場合、ピクチャボックスは自動的に親パネルのサイズに設定され、大きく設定することはできません(少なくとも私が見つけることはできません)。これは技術の目的を破る。だから、パネルに絵文字を置いてはいけませんが、それは完全に動作します。

関連する問題