- PR -

パネル同時スクロールでスクロールバーを非表示にしたい

1
投稿者投稿内容
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-01-10 00:14
初めまして、質問させて頂きます。

Windowsフォームで、SplitContainerにより水平分割した2つのパネルを
Panel2のスクロールバーで同時にスクロールさせています。
Panel1, Panel2ともAutoScrollプロパティをtrueに設定し、
Panel2のScrollイベントのハンドラで
Panel1.HorizontalScroll.Valueを設定しています。

ここで、Panel1側のスクロールバーを非表示にしたいと思い、
いろいろ試行錯誤してみたのですが、どうにも上手くいきません。

フォームのコンストラクタのInitializeComponentの呼び出し後に
以下のコードを書いてみましたが、効果はありませんでした。

コード:
HScrollProperties hscroll = this.splitContainer1.Panel1.HorizontalScroll;
hscroll.Visible = false;



また、デザイナでPanel1のAutoScrollをfalseにして、
上記コードを書いてみたところ、非表示にはなりましたが、
スクロールしたときに一瞬表示されて見えます。
他にもいろいろ試行錯誤してみたのですが、解決できません。

どなたか解決法のわかる方がいらっしゃいましたら、教えてください。
よろしくお願いします。

開発環境は「Visual C# 2005 Professional Edition」です。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-01-10 01:26
解決法ではないですが、
私がユーザだったら、上下両方にスクロールバーがついていて、
どちらをスクロールさせても連動する方が嬉しいです。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-01-10 21:50
お返事ありがとうございます。

それも手ではあるのですが、プログラムの仕様上、
操作性の問題よりも縦のスペースが貴重なので
スクロールバーを非表示にしたいのです。
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2007-01-11 08:06
Panel1に新しいPanel(仮にPanel3として)を配置して、Panel2のScrollイベントのハンドラで、Panel3のLocation.Xプロパティを操作するというのはどうでしょうか?

論外だったらスルーしてください

_________________
--------------------------------------------
HIRO's.NET VB.NETとC#のTipsを掲載しています

[ メッセージ編集済み 編集者: HIRO 編集日時 2007-01-11 08:56 ]
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-01-12 22:28
ありがとうございます。
HIROさんにご提示頂いた方法で、同様の動きを実現できました。

今までPanel1に置いてあったコントロールを全てPanel3に移し、
Panel1のAutoScrollをFalseにし、Scrollイベントハンドラを
以下のように記述しました。

コード:
private void splitContainer1_Panel2_Scroll(object sender, ScrollEventArgs e)
{
  if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
  {
    panel3.Left = -e.NewValue;
  }
}



最初の投稿に示した方法で上手く行かない理由はわからないままですが…
1

スキルアップ/キャリアアップ(JOB@IT)