如何在WPF中一次只选择一个复选框?

时间:2013-05-29 10:05:29

标签: c# wpf wpf-controls

我必须保留2个复选框,一次只能选择一个。但在我的下面的代码中,两者都被选中。我应该如何在WPF中实现我的功能?

<StackPanel Orientation="Vertical" Name="spRoles">

<CheckBox Name="chkMale" Content="Male" />
<CheckBox Name="chkFemale" Content="Female" />

</StackPanel>

我必须使用复选框而不是单选按钮。

4 个答案:

答案 0 :(得分:5)

听取选择事件或类似事件并检查其他复选框

public void MaleOnSelection(object sender, EventArgs e)
{
    if(chkFemale.Selected)
        chkFemale.Selected=false;
}

显然你必须为女性复选框做同样的事情

无论如何,如其他单位所述的单选按钮会更好,你可以将它设置为复选框,如果这是你需要的那样

答案 1 :(得分:3)

在您的情况下,您应该使用单选按钮。

允许复选框只选择一个,这没有意义。

如果您仍然使用复选框,则复选框的整个概念将会消失。

答案 2 :(得分:1)

在这种情况下,只需使用单选按钮而不是复选框。复选框主要用于多项选择。

答案 3 :(得分:0)

对于那些有目的和不同意的人来说,允许复选框只选择一个没有意义。您可以为组中的每个复选框调用该方法。

    private void uncheckCheckBoxes(object sender)
    {
        if (radioButtonEdit.IsChecked == true)
        {
            CheckBox currentcheckbox = (CheckBox)sender;

            foreach (var checkBox in ManyCheckBoxes.Children.OfType<CheckBox>().Where(cb => (bool)cb.IsChecked))
            {
                if (!currentcheckbox.Name.Equals(checkBox.Name))
                {
                    checkBox.IsChecked = false;
                }
            }
         }
    }

    private void checkbox1_Checked(object sender, RoutedEventArgs e)
    {
        uncheckCheckBoxes(sender);
    }