2011-01-12 2 views
3

У меня есть приложение (не WPF) простой Windows Forms, и у меня есть два элемента управления на нем:Как я могу синхронизировать значения элементов управления NumericUpDown и TrackBar в WinForms?

  1. TrackBar
  2. NumericUpDown

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

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

Спасибо.

ответ

8

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

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

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

+1

Не приведет ли это к бесконечным звонкам? – 26071986

+0

@ 26071986: Нет, не будет. Попробуй и посмотри. ;-) –

+0

Получение бесконечного цикла вызовов событий, как @ 26071986 предлагает – whiteshooz

Смежные вопросы