毎度失礼いたします。
今、WinXP + VB2005 Expressの環境でプログラムを作成しているのですが、
派生フォームのクラスを作成し、その中にはPanel複数、VScrollBar1つ、
PictureBox等で作成したサムネイル用クラスのインスタンスが複数存在
しているような状況です。
で、VScrollBarでPanelのスクロールを制御しようとしているのですが、
実行してみると、なぜかVScrollBarを1回しかクリックしていないのに
同方向にズルズルと(VScrollBarにマウスカーソルがある限り、
マウスカーソルの位置まで?)スクロールする場合があったり、
そうでない場合でも2回クリックしたような動作をしてみたり
(倍スクロールする)、何だか妙なのです。
実際にスクロール処理するプロシージャ内で、VScrollBarを一瞬
Enabled = Falseの状態にしてやると、ズルズルとスクロールするのは
何とか無くなるのですが、それだと当然ながらドラッグして
スクロール出来なくなります。
何とか、普通に動作させることは出来ないものでしょうか?
一応、ソースの必要そうな部分を抜粋して載せておきます。
Private Sub vsbThumb_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles vsbThumb.Scroll
ScrollProc(e.NewValue)
End Sub
Private Sub ScrollProc(ByVal v As Integer)
pnlThumbBase.Top = -v 'スクロールさせるパネルの位置
vsbThumb.Enabled = False
vsbThumb.Enabled = True
My.Application.DoEvents()
End Sub
…スクロール関連処理は基本的にこれだけなんですけど(eventArgs.Typeを制限してみたり
スクロールするたびにFocusを移してみたり、いろいろ試しては みたんですが)…
何が悪いんだか、???です。
追加です。
調べてみたらPanelにAutoScrollプロパティなんてものがあったので、
VScrollBarを隠して そちらを有効にしてみたのですが、
余分にスクロールしてしまう現象は、それでも発生してしまいます。
(更に悪いことに、スクロールしているうちに表示が一部壊れたりする)
ちなみに、スクロールバーをクリックしても始めは反応しなかったりするので、
Formからフォーカスがたびたび外れている気もするんですが、それは
スクロールバー自体の動作に影響したりするものでしょうか?
大変失礼致しました(;_;)自己解決しました。
他のFormを都合でBringToTopとか行っていた関係で、Focusが訳わからん状態に
なっていたようです。
仕様的な都合でBringToTopしなくても大丈夫なように改造したら、ScrollBarの動きも
直ってしまいました(汗)
すいません解決チェック忘れてました(^^;;;
ツイート | ![]() |