Управление автоматически прокручивается назад при использовании колесика мыши - PullRequest
0 голосов
/ 07 января 2012

Я создал элемент управления, и у меня возникла странная проблема.Когда я использую колесико мыши для прокрутки, вид настраивается, но когда я двигаю мышь, полоса прокрутки возвращается в исходное положение.

Однако, когда я нажимаю на полосу прокрутки и перетаскиваю полосу вверх или внизи затем используйте колесико мыши, проблема исчезла.

Я хотел бы опубликовать некоторый код, но я не знаю, какой код вставить.Это код, который обрабатывает видимость полосы прокрутки:

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:

Я заметил в загрузке формы (где включен элемент управления), значение Y AutoScrollPosition установлено на -51вместо 0.

Ответы [ 2 ]

0 голосов
/ 07 января 2012

Извините, ребята, сейчас я чувствую себя очень глупо.Этот, который вы бы никогда не догадались.

Форма, в которой находится элемент управления, была зарегистрирована в MouseMove элемента управления.Когда сработало движение мыши, я установил свойство Text метки.Этот ярлык был поверх моей формы.Поэтому, когда я использую колесико мыши для прокрутки, а затем сработало перемещение мыши, полоса прокрутки почему-то отскочила назад.

Нет, я больше не использую событие перемещения мыши, и все работает как положено ...

0 голосов
/ 07 января 2012

Это то, как ваш код должен выглядеть на уровне класса, и он должен работать, потому что вы переопределяете исходный базовый метод. Я публикую это просто в качестве примера, чтобы у вас было, чему следовать. попробуйте перезагрузить компьютер, если он не работает, или новую мышь. Это инфракрасная мышь 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...