2

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

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

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

</StackPanel>

我只能使用复选框而不是单选按钮。

4

4 回答 4

5

监听选择事件或类似事件并选中另一个复选框

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

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

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

于 2013-05-29T10:08:51.983 回答
3

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

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

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

于 2013-05-29T10:06:47.770 回答
1

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

于 2013-05-29T10:16:51.697 回答
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);
    }
于 2016-10-20T14:02:10.833 回答