【问题标题】:if(checkbox.Checked){} issues [duplicate]if(checkbox.Checked){} 问题 [重复]
【发布时间】:2018-05-31 01:41:05
【问题描述】:

我不知道为什么,但我打开了一个新项目,我正在尝试做一个简单的复选框 + 按钮 + 控制台写入语句,但我收到了一个错误。 错误指出: RoutedEventHandler System.Windows.Controls.Primitives.ToggleButton.Checked ToggleButton.Checked 事件只能出现在 += 或 -= 的左侧。

我之前使用过这段代码没有任何问题,所以我不确定发生了什么......

private void button_Click(object sender, RoutedEventArgs e)
    {
        if(checkBox1.Checked)
        {
          Console.Write("Checked");
        }
    }

【问题讨论】:

  • IsChecked?.....
  • 正如我所说,我确实在其他地方使用了完全相同的行并且它有效。所以我不确定发生了什么。
  • 不,不是,请阅读问题。
  • 您可能将它与 WinForms CheckBox 的 Checked 属性混淆了。在 WPF 中,该属性为IsChecked
  • EDIT: before more idiots mark this as a duplicate 听起来像镜中症候群中的人,不要像别人自称的那样称呼别人......!

标签: c# wpf if-statement checkbox checked


【解决方案1】:

Checked 是一个事件(这就是为什么当您的代码查找处理程序订阅时会引发异常,MSDN reference),IsCheckedBoolean,它可能是您正在寻找的属性(@ 987654322@)。您的代码应如下所示:

private void button_Click(object sender, RoutedEventArgs e)
{
    if ((bool)checkBox1.IsChecked)
        Console.Write("Checked");
}

【讨论】:

  • 这就是我一直在寻找的东西,我会把它作为答案。但是,IsChecked 会返回一个布尔值吗? != bool 错误,因此更正确的编码将是(checkbox1.IsChecked == true)。从来没有找到解决办法。
  • 为什么要检查布尔值相等性?此代码摘录 100% 有效,无需执行布尔比较,因为 if 语句针对布尔值。
  • 要执行相反的检查,您只需要if (!checkBox1.IsChecked)
  • 当我按原样使用您的代码时,我收到错误“无法将类型 bool?隐式转换为 bool。存在显式转换(您是否缺少演员表?)。”我发现的唯一解决方法是进行检查。有没有什么条件必须先设置才能不用检查?
  • 错误信息告诉你该怎么做。写if ((bool)checkBox1.IsChecked)
猜你喜欢
  • 2015-03-13
  • 2021-10-03
  • 2016-11-21
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多