使用鼠标滚轮时,控件会自动向后滚动

时间:2012-01-06 23:23:52

标签: c# winforms user-controls

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

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

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

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:

我已注意到在表单加载(控件打开的位置)中,Y的{​​{1}}值设置为-51而不是0.

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

抱歉,伙计们,我现在觉得很愚蠢。这个你永远不会猜到的。

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

不,我不再使用鼠标移动事件,一切都按预期工作......