Как я могу синхронизировать значения элемента управления NumericupDown и Trackbar в Winforms?

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

Вопрос

У меня есть простое приложение Windows Forms (не WPF), и у меня есть два элемента управления:

  1. Трекбар
  2. 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;
}

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

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