C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: hScrollBarとvScrollBarの使い方


(過去ログ 49 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■26872 / inTopicNo.1)  hScrollBarとvScrollBarの使い方
  
□投稿者/ ありあり (21回)-(2008/10/22(Wed) 14:30:53)

分類:[C#] 

お世話になっております。
OS:windowsXP,VisualStudio2005で開発しています。

画面にhScrollBarとvScrollBarを貼り付けて、画面に貼り付けた部品(ラベルとパネル)を
スクロールさせたいのですが、hScrollBarとvScrollBarの使い方がわかりません。
親部品に関連付けさせる方法もわかりません。

ご教授よろしくお願いいたします。

<詳細>
Formのスクロールバーや、パネルのスクロールバーでは解決しない画面レイアウトです。


全体がパネル1に乗っています。
パネル1----------------------------------------------------------------|
    |----------------------------------------------------------|   |
    |picturebox1                          |   |          
    |----------------------------------------------------------|   |
ラベル1 |パネル2                        | ス |   |
ラベル2 |パネル3                        | ク |   |
ラベル3 |パネル4                        | ロ |   |
ラベル4 |パネル5                        | - |   |
        |                                                      | ル |   |
    |                           | バ|   |
        |------------------------------------------------------| - |   |
        |<***スクロールバー****************************************>   |
-----------------------------------------------------------------------|


横スクロールバーがスクロールされた時に動くもの…picturebox1,パネル2〜パネル5
縦スクロールバーがスクロールされた時に動くもの…ラベル1〜4,パネル2〜パネル5

ラベル1〜4は横スクロールバーがスクロールされた時は固定なのですが、
縦スクロールバーがスクロールされた場合は一緒にスクロールさせたいのです。

またpicturabox1は縦スクロールバーがスクロールされた時は固定なのですが、
横スクロールバーがスクロールされた場合は一緒にスクロールさせたいのです。

パネル2〜5は横にも縦にもスクロールします。

引用返信 編集キー/
■26880 / inTopicNo.2)  Re[1]: hScrollBarとvScrollBarの使い方
□投稿者/ おてやわらか (29回)-(2008/10/22(Wed) 15:59:15)
HScrollBar、VScrollBarの機能が解っていないだけだと思いますが?

基本は、Min/Max の間でValueが変化するだけの、コントロールです。
ですから、
基礎的な使い方としては、
Valueの変化に従って、プログラム側が処理を判断する必要があります。
Valueの変化時には、イベントが発生しますので、それを使うのが簡単な方法です。

DataBindingsがありますから、DataSourceとの連動機能を設定できますが、DBの知識が必要です。
引用返信 編集キー/
■26882 / inTopicNo.3)  Re[2]: hScrollBarとvScrollBarの使い方
□投稿者/ ありあり (22回)-(2008/10/22(Wed) 16:12:00)
No26880 (おてやわらか さん) に返信
> HScrollBar、VScrollBarの機能が解っていないだけだと思いますが?
>
> 基本は、Min/Max の間でValueが変化するだけの、コントロールです。
> ですから、
> 基礎的な使い方としては、
> Valueの変化に従って、プログラム側が処理を判断する必要があります。
> Valueの変化時には、イベントが発生しますので、それを使うのが簡単な方法です。
> ’
> DataBindingsがありますから、DataSourceとの連動機能を設定できますが、DBの知識が必要です。

要は、画面の部品を自由に紐付けて、スクロールすることは出来ないということですね。
どうもありがとうございました。
引用返信 編集キー/
■26883 / inTopicNo.4)  Re[2]: hScrollBarとvScrollBarの使い方
□投稿者/ みきぬ (163回)-(2008/10/22(Wed) 16:13:16)
昔、似たようなことをやったことがあるので、そのときの記憶を掘り返してみました。

・ラベル1〜4 をまとめて、1つのPanelに配置します(便宜上、行ヘッダパネルと呼ぶことにします)
・PictureBox1 を、別のPanelに配置します(列ヘッダパネル)
・パネル2〜5 をまとめて、また別のPanelに配置します(メインパネル)
・メインパネルは、常時スクロールバーが表示されるようにしておきます。このパネルのスクロールバーを使うので、HScrollBar、VScrollBar は必要ありません。
・あとはメインパネルのスクロールイベントを拾い、適宜行ヘッダパネルと列ヘッダパネルのスクロール位置を操作すればよいと思います。

作りこみが必要なことには変わりありませんが、多少は楽になると思います。
引用返信 編集キー/
■26885 / inTopicNo.5)  Re[3]: hScrollBarとvScrollBarの使い方
□投稿者/ ありあり (23回)-(2008/10/22(Wed) 16:18:25)
No26883 (みきぬ さん) に返信
> 昔、似たようなことをやったことがあるので、そのときの記憶を掘り返してみました。
>
> ・ラベル1〜4 をまとめて、1つのPanelに配置します(便宜上、行ヘッダパネルと呼ぶことにします)
> ・PictureBox1 を、別のPanelに配置します(列ヘッダパネル)
> ・パネル2〜5 をまとめて、また別のPanelに配置します(メインパネル)
> ・メインパネルは、常時スクロールバーが表示されるようにしておきます。このパネルのスクロールバーを使うので、HScrollBar、VScrollBar は必要ありません。
> ・あとはメインパネルのスクロールイベントを拾い、適宜行ヘッダパネルと列ヘッダパネルのスクロール位置を操作すればよいと思います。
>
> 作りこみが必要なことには変わりありませんが、多少は楽になると思います。

ご回答、どうもありがとうございます。早速やってみます。
引用返信 編集キー/
■26891 / inTopicNo.6)  Re[3]: hScrollBarとvScrollBarの使い方
□投稿者/ みきぬ (165回)-(2008/10/22(Wed) 16:26:20)
一応図に描くとこんなかんじ。

パネル1---------------------------------------------------------------|
    |---------------------------------------------------------|   |
    |列パネル                            |   |
--------|---------------------------------------------------------|   |
行パネル|メインパネル                      |△|   |
        |                               |  |   |
        |                               |  |   |
        |                               |  |   |
        |                                                      |  |   |
    |                           |▽|   |
        |------------------------------------------------------|--|   |
        |<|                                                  |>|  |   |
----------------------------------------------------------------------|

引用返信 編集キー/
■26899 / inTopicNo.7)  Re[4]: hScrollBarとvScrollBarの使い方
□投稿者/ ありあり (24回)-(2008/10/22(Wed) 17:00:31)
No26891 (みきぬ さん) に返信
> ・あとはメインパネルのスクロールイベントを拾い、適宜行ヘッダパネルと列ヘッダパネルのスクロール位置を操作すればよいと思います。


メインパネルでスクロールした時の、
行パネル・列パネルのスクロール位置の操作はどうやったらできるのですか。

引用返信 編集キー/
■26901 / inTopicNo.8)  Re[5]: hScrollBarとvScrollBarの使い方
□投稿者/ みきぬ (167回)-(2008/10/22(Wed) 17:13:19)
No26899 (ありあり さん) に返信
> ■No26891 (みきぬ さん) に返信
>>・あとはメインパネルのスクロールイベントを拾い、適宜行ヘッダパネルと列ヘッダパネルのスクロール位置を操作すればよいと思います。
>
>
> メインパネルでスクロールした時の、
> 行パネル・列パネルのスクロール位置の操作はどうやったらできるのですか。
>
さらに思い出してみました。

・行パネルは、縦方向のみスクロールを有効にしておく
・列パネルは、横方向のみスクロールを有効にしておく
・行および列パネルのスクロールバーは、メインパネルがちょうど上から重なるようにして隠す

その上で、

行パネル.VerticalScroll.Value = メインパネル.VerticalScroll.Value
列パネル.HorizontalScroll.Value = メインパネル.HorizontalScroll.Value

のようにしてやったと思います。


# 思い出してみると、あまりいい方法じゃない気がしてきたorz
引用返信 編集キー/
■26904 / inTopicNo.9)  Re[6]: hScrollBarとvScrollBarの使い方
□投稿者/ ありあり (25回)-(2008/10/22(Wed) 17:33:03)
No26901 (みきぬ さん) に返信
> ■No26899 (ありあり さん) に返信
>>■No26891 (みきぬ さん) に返信
> >>・あとはメインパネルのスクロールイベントを拾い、適宜行ヘッダパネルと列ヘッダパネルのスクロール位置を操作すればよいと思います。
>>
>>
>>メインパネルでスクロールした時の、
>>行パネル・列パネルのスクロール位置の操作はどうやったらできるのですか。
>>
> さらに思い出してみました。
>
> ・行パネルは、縦方向のみスクロールを有効にしておく
> ・列パネルは、横方向のみスクロールを有効にしておく
> ・行および列パネルのスクロールバーは、メインパネルがちょうど上から重なるようにして隠す
>
> その上で、
>
> 行パネル.VerticalScroll.Value = メインパネル.VerticalScroll.Value
> 列パネル.HorizontalScroll.Value = メインパネル.HorizontalScroll.Value
>
> のようにしてやったと思います。
>
>
> # 思い出してみると、あまりいい方法じゃない気がしてきたorz


パネルを重ねたのですが、スクロールバーのあるパネルが常に上に重なるようで、バーが隠れませんでした。
また、横のみ・縦のみのスクロール設定は出来ないようです。
どうも有り難うございました。


引用返信 編集キー/
■26911 / inTopicNo.10)  Re[7]: hScrollBarとvScrollBarの使い方
□投稿者/ ありあり (26回)-(2008/10/22(Wed) 19:04:48)
No26904 (ありあり さん) に返信
> ■No26901 (みきぬ さん) に返信
>>■No26899 (ありあり さん) に返信
> >>■No26891 (みきぬ さん) に返信
>>>>・あとはメインパネルのスクロールイベントを拾い、適宜行ヘッダパネルと列ヘッダパネルのスクロール位置を操作すればよいと思います。
> >>
> >>
> >>メインパネルでスクロールした時の、
> >>行パネル・列パネルのスクロール位置の操作はどうやったらできるのですか。
> >>
>>さらに思い出してみました。
>>
>>・行パネルは、縦方向のみスクロールを有効にしておく
>>・列パネルは、横方向のみスクロールを有効にしておく
>>・行および列パネルのスクロールバーは、メインパネルがちょうど上から重なるようにして隠す
>>
>>その上で、
>>
>>行パネル.VerticalScroll.Value = メインパネル.VerticalScroll.Value
>>列パネル.HorizontalScroll.Value = メインパネル.HorizontalScroll.Value
>>
>>のようにしてやったと思います。
>>
>>
>># 思い出してみると、あまりいい方法じゃない気がしてきたorz
>
>
> パネルを重ねたのですが、スクロールバーのあるパネルが常に上に重なるようで、バーが隠れませんでした。
> また、横のみ・縦のみのスクロール設定は出来ないようです。
> どうも有り難うございました。
>
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -