使用鼠标滚轮时,控制会自动滚动回来
我创建了一个控件,并且遇到一个奇怪的问题。当我使用鼠标滚轮滚动时,视图会被调整,但是当我移动鼠标时,滚动条会跳回原来的位置。使用鼠标滚轮时,控制会自动滚动回来
但是,当我单击滚动条并向上或向下拖动栏,然后使用鼠标滚轮时,问题就消失了。
我想发布一些代码,但我不知道要粘贴什么代码。这是处理滚动条的可见性的代码:
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
{
base.SetBoundsCore(x, y, ControlWidth, ControlHeight, specified);
}
ControlWidth
和ControlHeight
是计算控制的宽度和高度的自定义属性。
编辑1: 类签名:
public partial class TimeLineScheduleControl : UserControl
编辑2:
我已经在窗体负载(其中控制是上)注意到的,AutoScrollPosition
的Y
值被设置为-51而不是0.
这就是你的代码应该看起来像从类级别,它应该工作,因为你重写初始基本方法 我发布这只是作为一个前充足,所以你有东西要遵循.. 尝试重新启动,如果它不工作或新的鼠标..是这是一个USB/USB红外鼠标。
public class YourClass : UserControl
{
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
{
if (height > 35)
{
height = 35;
}
base.SetBoundsCore(x, y, width, height, specified);
}
}
我试过重新启动,我试过了一个不同的鼠标。两者都没有成功。我的控件继承自'UserControl'。 – Martijn 2012-01-06 23:39:49
对不起,我现在觉得很愚蠢。这是你永远不会想到的。
控件所在的表单已注册到控件的MouseMove
。当鼠标移动触发时,我设置了标签的Text
属性。这个标签位于我的表单之上。所以当我使用鼠标滚轮滚动时,随后鼠标移动触发,滚动条由于某种原因跳回。
不,我不使用鼠标移动事件更多,一切都会按预期...
你应该尝试不同的鼠标,看看是否能解决问题。 – 2012-01-06 23:27:58
我们可以看到这个完整的类签名..需要看看什么控制类继承 – MethodMan 2012-01-06 23:30:21
@PeteWilson我试过不同的鼠标,但仍然有问题 – Martijn 2012-01-06 23:40:19