我正在尝试获取面板上的滚动条位置,但如果我通过单击并拖动滚动条或单击其滚动按钮来滚动它,则可以使用它。
如果我使用鼠标滚轮滚动面板,则无效。
这是我的代码:
if (mypanel.HorizontalScroll.Value > 500)
{
lbl1.Text = "A";
}
if (mypanel.HorizontalScroll.Value < 300)
{
lbl1.Text = "B";
}
答案 0 :(得分:2)
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();
};
答案 1 :(得分:0)
代码看起来没问题,但是当鼠标滚轮转动时它是否被调用?即代码是否附加到MouseWheel事件? 控制焦点触发事件可能也存在问题,特别是对于面板。