Как я могу переместить трекбар в ответ на события мыши в C#?

StackOverflow https://stackoverflow.com/questions/4516350

Вопрос

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

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), пока эта мышь опущена.

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

Это было полезно?

Решение

Вам нужно выполнить свой код в MouseMove мероприятие, так же хорошо как MouseDown мероприятие.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top