C# 只允许选中一个复选框

C# 只允许选中一个复选框,c#,xamarin.forms,C#,Xamarin.forms,我有两个复选框,我希望它们以未选中的开头。但是,如果选择一个,然后选择改变主意并选择另一个框,则上一个框将不选中。到目前为止,我的代码如下,我非常接近。但当我运行我的应用程序时,当你选择一个应用程序时,它们都会打开或关闭。请帮忙 private void customer_IsCheckedChanged(object sender, EventArgs e) { if (business.IsChecked == true) {

我有两个复选框,我希望它们以未选中的开头。但是,如果选择一个,然后选择改变主意并选择另一个框,则上一个框将不选中。到目前为止,我的代码如下,我非常接近。但当我运行我的应用程序时,当你选择一个应用程序时,它们都会打开或关闭。请帮忙

    private void customer_IsCheckedChanged(object sender, EventArgs e)
    {
        if (business.IsChecked == true)
        {
            business.IsChecked = !customer.IsChecked;
        }

        if (business.IsChecked == false)
        {
            business.IsChecked = !customer.IsChecked;
        }

    }

    private void business_IsCheckedChanged(object sender, EventArgs e)
    {
        if (customer.IsChecked == true)
        {
           customer.IsChecked = !business.IsChecked;
        }

        if (customer.IsChecked == false)
        {
            customer.IsChecked = !business.IsChecked;
        }
    }

您需要仔细考虑一下代码逻辑。例如:

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    if (business.IsChecked == true)
    {
        business.IsChecked = !customer.IsChecked;
    }

    if (business.IsChecked == false)
    {
        business.IsChecked = !customer.IsChecked;
    }

}
与以下内容完全相同:

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    business.IsChecked = !customer.IsChecked;
}
您总是将
business.IsChecked
的值更改为
!customer.IsChecked
business.IsChecked的值无关

还要记住,你的行为与你描述的略有不同。即使你纠正了你的逻辑,上面。若您勾选客户,那个么业务应该保持未勾选状态,然而若您取消勾选客户,那个么您将检查业务。您所描述的只是,如果您选中了业务,您希望取消选中客户。也许这个行为是正确的,但不是你所描述的

如果我所描述的不是您想要的,那么您应该只在控件更改为true时实现此逻辑:

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    if(customer.IsChecked)
        business.IsChecked = false;
}

至于你为什么会有这种行为。我怀疑这是您的问题:可能更改为
check\u单击了
,而不是
check\u更改了
,这样您就不会触发自己的结果处理程序。

您需要仔细考虑一下您的代码逻辑。例如:

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    if (business.IsChecked == true)
    {
        business.IsChecked = !customer.IsChecked;
    }

    if (business.IsChecked == false)
    {
        business.IsChecked = !customer.IsChecked;
    }

}
与以下内容完全相同:

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    business.IsChecked = !customer.IsChecked;
}
您总是将
business.IsChecked
的值更改为
!customer.IsChecked
business.IsChecked的值无关

还要记住,你的行为与你描述的略有不同。即使你纠正了你的逻辑,上面。若您勾选客户,那个么业务应该保持未勾选状态,然而若您取消勾选客户,那个么您将检查业务。您所描述的只是,如果您选中了业务,您希望取消选中客户。也许这个行为是正确的,但不是你所描述的

如果我所描述的不是您想要的,那么您应该只在控件更改为true时实现此逻辑:

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    if(customer.IsChecked)
        business.IsChecked = false;
}

至于你为什么会有这种行为。我怀疑这就是你的问题所在:如果你知道如何使用NuGet package manager,你可以使用XLabs插件。它有单选按钮。

如果您知道如何使用NuGet软件包管理器,您可以使用XLabs插件。它有单选按钮。

我建议将代码简化一点。我们应该解决问题

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    if (customer.IsChecked)
    {
        business.IsChecked = false;
    }
}

private void business_IsCheckedChanged(object sender, EventArgs e)
{
    if (business.IsChecked)
    {
        customer.IsChecked = false;
    }
}

我建议将代码简化一点。我们应该解决问题

private void customer_IsCheckedChanged(object sender, EventArgs e)
{
    if (customer.IsChecked)
    {
        business.IsChecked = false;
    }
}

private void business_IsCheckedChanged(object sender, EventArgs e)
{
    if (business.IsChecked)
    {
        customer.IsChecked = false;
    }
}

为什么不使用单选按钮?从用户体验的角度来看可能更好,而且更容易实现。Xamarin from没有单选按钮,Im使用Telerik控件。他们只有复选框我也尝试过类似的方法,但我得到了一个错误chkaboveground.Checked=(chkBuried.Checked)?错误:chkAboveGround。已检查;为什么不使用单选按钮可能重复?从用户体验的角度来看可能更好,而且更容易实现。Xamarin from没有单选按钮,Im使用Telerik控件。他们只有复选框我也尝试过类似的方法,但我得到了一个错误chkaboveground.Checked=(chkBuried.Checked)?错误:chkAboveGround。已检查;xlabs.form的可能重复项不再被维护,并且也有bug。xlabs.form不再被维护,并且也有bug。但是,当您取消选中一个框时,另一个框仍处于未选中状态。我不认为那是他们想要的…?但是当你取消选中一个框时,另一个框保持未选中状态。我不认为那是他们想要的。。?