DOBON.NET DOBON.NETプログラミング掲示板過去ログ

パネルのスクロールバーについて

分類:[.NET]

フォームにPanel1を配置して、Panel1にPanel2、Panel3を図のように
配置しています。
Panel1のスクロールバーでPanel2、Panel3を垂直にスクロールさせ、Panel3の
スクロールバーでPanel3の内容を水平にスクロールさせたいと思っています。
Panel2とPanel3を垂直にスクロールする事は出来るのですがPanel3を水平に
スクロールさせる事ができません。
どなたか方法をご存知の方、宜しくお願い致します。

+----------Panel1-----------+
|+----------+ +----------+  |
||          | |          |  |
||          | |          |  |
||          | |          |  |
||          | |          |↑|
||  Panel2  | |  Panel3  |  |
||          | |          |↓|
||          | |          |  |
||          | |          |  |
||          | |          |  |
||          | |          |  |
|+----------+ +----------+  |
|                 ← →     |
+---------------------------+
■No6824に返信(ことぶきさんの記事)

ことぶきさん、こんにちは。

> Panel2とPanel3を垂直にスクロールする事は出来るのですがPanel3を水平に
> スクロールさせる事ができません。

普通にできると思うのですが。。
もしかして、AutoScrollプロパティが設定されてないとか。
■No6850に返信(ぱるさんの記事)
> ■No6824に返信(ことぶきさんの記事)
>
> ことぶきさん、こんにちは。
>
>>Panel2とPanel3を垂直にスクロールする事は出来るのですがPanel3を水平に
>>スクロールさせる事ができません。
>
> 普通にできると思うのですが。。
> もしかして、AutoScrollプロパティが設定されてないとか。
>
ぱるさん、こんにちは。
AutoScroll=TrueをPanel1とPanel3に設定しています。
色々と方法を考えていて気が付いたのですが、もしPanel3も正常にスクロール
出来たとしてもPanel3には垂直のスクロールバーは必要ありません。
Panel3は水平スクロールのみで垂直スクロールはPanel1右横の垂直スクロールで
行いたいのです。このような仕様を満たすためには、やっぱり
vScrollBarとhScrollBarコントロールを使用しないといけないのでしょうね。
これらのコントロールのvalue値を使ってPanle内を描画するのだと思いますが
何から手をつければ良いか分かりません。
■No6872に返信(ことぶきさんの記事)

AutoScroll=Trueだとやはり、必要があれば垂直・水平のスクロールバー
が出てしまいますね。。

他にパネル内のコントロールの配置を変更する方法としては、パネルの
Controlsコレクションでパネル内のコントロールを取得できるので、
こいつを foreachループなどで回して、位置をあわしてあげるとか。

自分に答えられるのはそれぐらいです。すみませんです。
■No6876に返信(ぱるさんの記事)
> ■No6872に返信(ことぶきさんの記事)
>
> AutoScroll=Trueだとやはり、必要があれば垂直・水平のスクロールバー
> が出てしまいますね。。
>
> 他にパネル内のコントロールの配置を変更する方法としては、パネルの
> Controlsコレクションでパネル内のコントロールを取得できるので、
> こいつを foreachループなどで回して、位置をあわしてあげるとか。
>
> 自分に答えられるのはそれぐらいです。すみませんです。
>
ぱるさん、有難うございます。
自分でも下記を参考にしながら頑張ってみます。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsscrollbarclasstopic.asp
■No6887に返信(ことぶきさんの記事)
> ■No6876に返信(ぱるさんの記事)
>>■No6872に返信(ことぶきさんの記事)
>>
>>AutoScroll=Trueだとやはり、必要があれば垂直・水平のスクロールバー
>>が出てしまいますね。。
>>
>>他にパネル内のコントロールの配置を変更する方法としては、パネルの
>>Controlsコレクションでパネル内のコントロールを取得できるので、
>>こいつを foreachループなどで回して、位置をあわしてあげるとか。
>>
>>自分に答えられるのはそれぐらいです。すみませんです。
>>
> ぱるさん、有難うございます。
> 自分でも下記を参考にしながら頑張ってみます。
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsscrollbarclasstopic.asp

ぱるさん、有難うございます。
ぱるさんの発言が凄いヒントになりました。
vScrollBarとhScrollBarコントロールを配置して
下記のようにしてみましたらスクロールできました。
Panel1の中に必要なコントロールを配置すると
まとめてスクロールできるので使いやすいです。
細かな調整は必要ですが解決です!!
panel1.Location = new Point(0-hScrollBar1.Value,0-vScrollBar1.Value);
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板