如何获取面板上的滚动条位置?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";
}
Scroll
和MouseWheel
是不同的。当您滚动时,这意味着您必须使用ScrollBar
滚动它,消息WM_HSCROLL
和WM_VSCROLL
将被发送到控件。使用 Mouse
时,还可以滚动,条件是scrollable container like Panel
中有 1 个子控件焦点,消息WM_MOUSEWHEEL
将发送到该控件。因此,要实现所需的目标,您必须为事件Scroll
和MouseWheel
注册处理程序,如下所示:
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();
};