如何获取面板上的滚动条位置?WinForms C#.

本文关键字:滚动条 位置 WinForms 何获取 获取 | 更新日期: 2023-09-27 18:37:04

我正在尝试获取面板上的滚动条位置,但是如果我通过单击并拖动 scroolbar 或单击其滚动按钮来滚动它,它就会起作用。

如果我使用鼠标滚轮滚动面板,它不起作用。

这是我的代码:

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

如何获取面板上的滚动条位置?WinForms C#.

ScrollMouseWheel是不同的。当您滚动时,这意味着您必须使用ScrollBar滚动它,消息WM_HSCROLLWM_VSCROLL将被发送到控件。使用 Mouse 时,还可以滚动,条件是scrollable container like Panel中有 1 个子控件焦点,消息WM_MOUSEWHEEL将发送到该控件。因此,要实现所需的目标,您必须为事件ScrollMouseWheel注册处理程序,如下所示:

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();
};