3

パネル上のスクロールバーの位置を取得しようとしていますが、スクロールバーをクリックしてドラッグするか、スクロールボタンをクリックしてスクロールするとうまくいきません。

マウス ホイールを使用してパネルをスクロールすると、機能しません。

これが私のコードです:

if (mypanel.HorizontalScroll.Value > 500)
        {
            lbl1.Text = "A";
        }
        if (mypanel.HorizontalScroll.Value < 300)
        {
            lbl1.Text = "B";
        }
4

1 に答える 1

3

ScrollとはMouseWheel異なります。スクロールするときは、 を使用しScrollBarてスクロールする必要があることを意味し、メッセージがコントロールWM_HSCROLLWM_VSCROLL送信されます。を使用すると、フォーカスされたMouse子コントロールが 1 つある状態でスクロールすることもでき、そのコントロールにメッセージが送信されます。したがって、目的を達成するには、両方のイベントのハンドラーを次のように登録する必要があります。scrollable container like PanelWM_MOUSEWHEELScrollMouseWheel

private void HandleScroll(){
    if (mypanel.HorizontalScroll.Value > 500) {
        lbl1.Text = "A";
    }
    else if (mypanel.HorizontalScroll.Value < 300) {
        lbl1.Text = "B";
    }
}
//place this code in your form constructor after InitializeComponent()
panel1.Scroll += (s,e) => {
   HandleScroll();
};
panel1.MouseWheel += (s,e) => {  
   HandleScroll();
};
于 2013-10-26T08:32:58.547 に答える