スクロールバーが勝手に連続動作しないようにするには?

解決


そがっち  2007-02-27 00:20:04  No: 135514

毎度失礼いたします。

今、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を移してみたり、いろいろ試しては みたんですが)…
何が悪いんだか、???です。


そがっち  2007-02-27 00:39:19  No: 135515

追加です。
調べてみたらPanelにAutoScrollプロパティなんてものがあったので、
VScrollBarを隠して そちらを有効にしてみたのですが、
余分にスクロールしてしまう現象は、それでも発生してしまいます。
(更に悪いことに、スクロールしているうちに表示が一部壊れたりする)
ちなみに、スクロールバーをクリックしても始めは反応しなかったりするので、
Formからフォーカスがたびたび外れている気もするんですが、それは
スクロールバー自体の動作に影響したりするものでしょうか?


そがっち  2007-02-27 03:29:56  No: 135516

大変失礼致しました(;_;)自己解決しました。
他のFormを都合でBringToTopとか行っていた関係で、Focusが訳わからん状態に
なっていたようです。
仕様的な都合でBringToTopしなくても大丈夫なように改造したら、ScrollBarの動きも
直ってしまいました(汗)


そがっち  2007-02-27 03:30:20  No: 135517

すいません解決チェック忘れてました(^^;;;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加