Как я могу переместить TrackBar в ответ на события мыши в C #? - PullRequest
3 голосов
/ 23 декабря 2010

Это, вероятно, запрос n00b. У меня есть потребность, где я хочу изменить значение трекбара на основе события мыши вниз. Этого я добился следующим образом:

private void MoveTrackBarToMouseClickLocation(TrackBar a_tBar, int a_mouseX)
{
    // Jump to the clicked location

        double dblValue;
        dblValue = ((double)a_mouseX / (double)a_tBar.Width) * (a_tBar.Maximum -    a_tBar.Minimum);
        a_tBar.Value = Convert.ToInt32(dblValue);
}

Эта часть отлично работает. У меня проблемы с включением прокрутки при нажатой кнопке мыши. например Если я нажму на трекбар, и мне понадобится сказать значение 50 с помощью мыши, я захочу прокрутить вправо или влево (от значения = 50), пока эта мышь не работает.

Надеюсь, я прояснил свою маленькую проблему. Любая помощь приветствуется. Спасибо

1 Ответ

2 голосов
/ 23 декабря 2010

Вам необходимо выполнить код в событии MouseMove , а также в событии MouseDown.

Это событие происходит, когда мышьперемещено , а удерживается одна из кнопок.Напротив, событие MouseDown, которое вы сейчас обрабатываете, вызывается только один раз при каждом нажатии кнопки мыши.Вот почему TrackBar не перемещается, когда пользователь перемещает мышь, но работает правильно при первом нажатии кнопки.

Вы не показали код, к которому вы подключили обработчики событий и /или вызовите функцию MoveTrackBarToMouseClickLocation, так что это настолько конкретно, насколько я могу получить.Но если вам уже удалось подключить событие MouseDown, это должно быть простое исправление.

...