我有两个复选框,我希望它们开始处于未选中状态。但是如果选择一个,然后选择改变主意并选择另一个框,则前一个将未被选中。到目前为止,我的代码在下面,我是如此接近。但是,当我运行我的应用程序时,如果选择一个,它们都会打开或关闭。请帮忙。
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;
}
}
答案 0 :(得分:2)
您需要再仔细考虑一下代码逻辑。例如:
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;
}
关于为什么会出现这种情况。我怀疑这是您的问题:If one checkbox is checked, set the other to unchecked,可能更改为check_clicked
而不是check_changed
,所以您不会触发自己的结果处理程序。
答案 1 :(得分:0)
如果您知道如何使用NuGet软件包管理器,则可以使用XLabs插件https://www.nuget.org/packages/XLabs.Forms/2.0.5782。它具有单选按钮。
答案 2 :(得分:0)
我建议稍微简化一下代码。应该解决问题。
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;
}
}