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

richTextBoxのスクロールバーをつまんだ時のイベントがわからない

環境/言語:[WindowsXP 言語C# .NET1.1]
分類:[.NET]

はじめまして。ののと申します。

richTextBoxにはVSCROLLイベントがあり、スクロールバーの上下ボタンや
バーの空白部分?クリック時は確かにイベントが発生するのですが、バーを
つまんでスクロールさせた時には発生しません。
バーをつまんでスクロールした時のイベントはどのように取得すればよいの
でしょうか。
以上、よろしくお願いします。
■No6118に返信(ののさんの記事)
> はじめまして。ののと申します。

はじめまして、java.lang.Nullpoという者です。

> richTextBoxにはVSCROLLイベントがあり、スクロールバーの上下ボタンや
> バーの空白部分?クリック時は確かにイベントが発生するのですが、バーを
> つまんでスクロールさせた時には発生しません。

私も確認いたしました。

> バーをつまんでスクロールした時のイベントはどのように取得すればよいの
> でしょうか。

イベントとして実装したいのなら、RichTextBoxを継承したカスタムコントロールを自作します。

// 名前空間は適当に決めてください
namespace TekitohNiKimetekudasai {

    // RichTextBoxを継承したExRichTextBox
    public class ExRichTextBox : System.Windows.Forms.RichTextBox {

        // this::WndProc (Override)
        protected override void WndProc(ref Message m) {
            const int WM_VSCROLL = 0x115;

            // WM_VSCROLLをキャッチしたらOnVScroll()を発生
            if (m.Msg == WM_VSCROLL) {
                OnVScroll(new System.EventArgs());
            }

            base.WndProc(ref m);
        }
    }
}

このExRichTextBoxコントロールを使えば、スクロールバーを摘んで移動した場合も、
VScroll()イベントは起きます。

ただし、移動が確定していない最中(まだ摘んでる状態で)も、イベントが起きますので
移動が確定した時でないとダメな時は、他のメッセージと絡ませる必要があります。

# その辺は面倒なので、省略させて頂きますが要領は同じです。
■No6137に返信(java.lang.Nullpoさんの記事)
> ■No6118に返信(ののさんの記事)
>>はじめまして。ののと申します。
>
> はじめまして、java.lang.Nullpoという者です。

ののです。
java.lang.Nullpoさんの方法でできました。
ありがとうございました。
今後ともご教授のほどよろしくお願いします。
解決済み!

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