2015-03-27 6 views
1

У меня есть четыре переключателя в той же группе. В зависимости от того, какой из них проверен, переменная изменится так:Объединение сгруппированных переключателей в один?

public void radiobutton1_Checked(object sender, RoutedEventArgs e) 
    { 
     angle_Offset = 0 - direction; 
    } 

    public void radiobutton2_Checked(object sender, RoutedEventArgs e) 
    { 
     angle_Offset = 90 - direction; 
    } 

    public void radiobutton3_Checked(object sender, RoutedEventArgs e) 
    { 
     angle_Offset = 180 - direction; 
    } 

    public void radiobutton4_Checked(object sender, RoutedEventArgs e) 
    { 
     angle_Offset = 270 - direction; 
    } 

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

ответ

1

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

Назначьте 0 тегу первого переключателя, 1 - тегу второго переключателя, 2 - тегу третьего переключателя и 3 - четвертому переключателю. Теперь ваш обработчик событий можно переписать следующим образом:

public void radiobutton2_Checked(object sender, RoutedEventArgs e) { 
    var rb = (RadioButton)sender; 
    var tag = Convert.ToInt32(rb.Tag); 
    angle_Offset = (90*tag) - direction; 
} 
+0

Я пробовал то, что вы сказали, и здесь я получаю сообщение об ошибке: var tag = (int) rb.Tag; " Указанный прилив недействителен. Я назначил 4 переключателя 0-3, и их свойства isChecked указывают на тот же метод. Мне нравится идея, хотя, определенно, что я имел в виду. Раньше я никогда не использовал теги. – pfinferno

+1

@pfinferno Вы назначили теги программным путем или через дизайнера? Если вы сделали это через конструктор, попробуйте использовать 'Convert' вместо трансляции. – dasblinkenlight

+0

Через дизайнера. То, что вы предложили, работало. Изменил его на Convert.ToInt32. Прекрасно работает. Большое спасибо! – pfinferno

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