Как я могу синхронизировать значения элементов управления NumericUpDown и TrackBar в WinForms? - PullRequest
3 голосов
/ 12 января 2011

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

  1. TrackBar
  2. NumericUpDown

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

Возможно ли это? Если да, то как я могу это сделать?

Спасибо.

1 Ответ

9 голосов
/ 12 января 2011

Конечно, это возможно. Я не знаю, как сделать автоматическую связь между двумя элементами управления, поэтому вам придется написать код самостоятельно. Но не волнуйтесь, это не сложно.

Сначала вам нужно прикрепить обработчик к событию, которое вызывается каждым элементом управления при изменении его значения. Логично, что оба контролируют это событие одинаково: 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;
}

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

...