将分组的单选按钮方法组合成一个?

Combining grouped radio button methods into one?

我在同一组中有四个单选按钮。根据检查的是哪一个,变量会像这样改变:

    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 语句,但它一样长,并且在检查不同的按钮时变量没有更新。任何提示都会很棒!

如果您为单选按钮分配标签并制作一个与这些标签相对应的角度数组,您可以使用一种方法来处理它们。

将 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;
}