使用鼠标滚轮时,控制会自动滚动回来

使用鼠标滚轮时,控制会自动滚动回来

问题描述:

我创建了一个控件,并且遇到一个奇怪的问题。当我使用鼠标滚轮滚动时,视图会被调整,但是当我移动鼠标时,滚动条会跳回原来的位置。使用鼠标滚轮时,控制会自动滚动回来

但是,当我单击滚动条并向上或向下拖动栏,然后使用鼠标滚轮时,问题就消失了。

我想发布一些代码,但我不知道要粘贴什么代码。这是处理滚动条的可见性的代码:

protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) 
{ 
    base.SetBoundsCore(x, y, ControlWidth, ControlHeight, specified); 
} 

ControlWidthControlHeight是计算控制的宽度和高度的自定义属性。

编辑1: 类签名:

public partial class TimeLineScheduleControl : UserControl 

编辑2:

我已经在窗体负载(其中控制是上)注意到的,AutoScrollPositionY值被设置为-51而不是0.

+1

你应该尝试不同的鼠标,看看是否能解决问题。 – 2012-01-06 23:27:58

+0

我们可以看到这个完整的类签名..需要看看什么控制类继承 – MethodMan 2012-01-06 23:30:21

+0

@PeteWilson我试过不同的鼠标,但仍然有问题 – Martijn 2012-01-06 23:40:19

这就是你的代码应该看起来像从类级别,它应该工作,因为你重写初始基本方法 我发布这只是作为一个前充足,所以你有东西要遵循.. 尝试重新启动,如果它不工作或新的鼠标..是这是一个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); 
    } 
} 
+0

我试过重新启动,我试过了一个不同的鼠标。两者都没有成功。我的控件继承自'UserControl'。 – Martijn 2012-01-06 23:39:49

对不起,我现在觉得很愚蠢。这是你永远不会想到的。

控件所在的表单已注册到控件的MouseMove。当鼠标移动触发时,我设置了标签的Text属性。这个标签位于我的表单之上。所以当我使用鼠标滚轮滚动时,随后鼠标移动触发,滚动条由于某种原因跳回。

不,我不使用鼠标移动事件更多,一切都会按预期...