12

時々、私は100x100と言う画像ボックスを持っています。ただし、表示される画像は実際には100x400です。

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

ツールボックスにスクロールバーが見つからなかったので、コーディングする必要があると思います。しかし、どうやって?そして、私は間違いを犯しておらず、ツールボックスにスクロールバーが表示されていないのではないかと思います。それではお詫びします:(

4

3 に答える 3

21

個別のスクロールバーコントロールを追加して、それらのイベントを、の画像が描画されるオフセットと同期させることができるScrollと思いますがPictureBox、それは実際の作業のように聞こえます。より良い方法があります。

  1. Panelフォームにコントロールを追加し、そのAutoScrollプロパティを「True」に設定します。これにより、現在表示されている境界の外側にあるコンテンツがコントロールに含まれている場合、コントロールは自動的にスクロールバーを表示します。.NET Frameworkは、1行のコードを記述しなくても、内部ですべてを処理します。

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

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

于 2011-01-13T07:01:02.623 に答える
4

私はこれを試しましたが、うまくいきました。ただし、画像ボックスがパネルにドッキングされている場合、画像ボックスは自動的に親パネルのサイズに設定され、大きく設定することはできません(少なくとも私が見つけた方法ではありません)。これはテクニックの目的を打ち破ります。つまり、ピクチャーボックスをパネルに配置しますが、ドッキングしないでください。完全に機能します。

于 2012-02-14T23:38:06.000 に答える
2

画像ボックスには自動スクロールバーはありませんが、VScrollBar(およびHScrollBar)コントロールをフォームに追加し、Scrollイベントが発生するたびに異なるオフセットで再描画することにより、画像のスクロールを手動で処理できます。

于 2011-01-13T04:27:20.840 に答える