使用C#& amp;检测检查了许多单选按钮。 XAML

时间:2015-06-28 17:59:01

标签: c# xaml windows-phone-8.1 radio-button

在Android / Java中有一个RadioGroup对象,可以包含许多RadioButtonsRadioGroup还有一个OnChanged事件我可以收听,然后询问现在哪个RadioButton被选中(然后获取所选的单选按钮ID)。

是否有相应的方法在C#中实现相同的功能?看来我需要为每个Checked响应RadioButton事件(虽然它们可以转到相同的事件处理程序),但是在事件处理程序中我需要遍历每个RadioButton看看它是否被检查过?如果我有很多(例如20)RadioButton,这就是很多代码。有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以指定一个属性来标识控件,例如Tag属性或Name属性。然后,您尝试将事件处理程序中的sender强制转换为CheckBox类型并检索标识属性。

private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
    CheckBox cb = sender as CheckBox;

    if(cb != null)
    {
        string cbName = cb.Name; 
    }
}

通过使用as而不是显式强制转换((CheckBox)sender),如果转换无效,则可以避免抛出异常。在这种情况下,如果只为CheckBoxes分配了这个事件处理程序,这是不太可能的情况,但在其他情况下这是一个好习惯,除非您因任何原因需要抛出异常。

答案 1 :(得分:0)

通常在Windows事件处理程序中有一个sender参数,可以将其强制转换为引发事件的相应控件类型......例如。

private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
    CheckBox chk = (CheckBox)sender;
}

现在您明确知道在检查事件发生时检查了哪个CheckBox。

因此,在您的情况下,您将相同的事件处理程序挂钩到所有CheckBox,然后使用chk变量标识新检查的CheckBox。