Как я могу синхронизировать значения элемента управления NumericupDown и Trackbar в Winforms?
-
10-10-2019 - |
Вопрос
У меня есть простое приложение Windows Forms (не WPF), и у меня есть два элемента управления:
- Трекбар
- Numericupdown
Я хочу сделать некоторую привязку между ними, поэтому, если один из них имеет изменение значения, другой элемент управления будет обновлен, чтобы показать то же значение.
Это возможно? Если так, как я могу это сделать?
Спасибо.
Решение
Конечно, это возможно. Я не знаю никакого способа установить связь между двумя элементами управления автоматическим, так что у вас будет код написать сами. Но не волнуйтесь, это не сложно.
Сначала вам нужно будет прикрепить обработчик к событию, которое поднимается каждому управлению при изменении его значения. Логично, оба управляют этим событием одинаково: ValueChanged
. Анкет Затем, в каждом методе обработчика событий, вы можете программно установить значение другого элемента управления на новое значение первого элемента управления. Например:
void myNumericUpDown_ValueChanged(object sender, EventArgs e)
{
// Sync up the trackbar with the value just entered in the spinbox
myTrackBar.Value = Convert.ToInt32(myNumericUpDown.Value);
}
void myTrackBar_ValueChanged(object sender, EventArgs e)
{
// Sync up the spinbox with the value just set on the trackbar
myNumericUpDown.Value = myTrackBar.Value;
}
Очевидно, что для этого нужно работать правильно, вам либо нужно убедиться, что элементы управления имеют одинаковый диапазон (максимальные и минимальные значения), либо добавить некоторые проверки ошибок в приведенный выше код.