【问题标题】:Saving checkbox/radiobutton bool to global var将复选框/单选按钮布尔值保存到全局变量
【发布时间】:2012-04-20 03:43:43
【问题描述】:

(使用 WPF 应用程序) 当我想将 bool 保存到这样的全局变量时出现错误:

Window msgOne = new Window();
 if (Properties.Settings.Default.sound01 == true)
  {
    msgOne.radioboxSound.IsChecked = true;
  }
 else
  {
    msgOne.radioboxSound.IsChecked = false;
  }
msgOne.ShowDialog();
//waiting for close
Properties.Settings.Default.sound01 = msgOne.radioboxSound.IsChecked;

radioboxSound 是复选框,Properties.Settings.Default.sound01 是全局参数,您可以在 VB c# 的设置选项卡中进行设置

我在上面片段的最后一个链接中得到的错误): 不能隐式转换类型“bool”? “布尔”。存在显式转换(您是否缺少演员表?)

但我没有使用任何 bool?,只有已设置的 bool。

有人知道怎么处理这个吗?

感谢

【问题讨论】:

  • 你确实使用了 Nullable(又名 bool?),因为 IsChecked 是一个。

标签: c# wpf global-variables boolean


【解决方案1】:

单选按钮的 IsChecked 属性是 'bool?'。将代码更改为

Properties.Settings.Default.sound01 = msgOne.radioboxSound.IsChecked??false;

多一点解释。

由于 RadioButton.IsChecked 是 Nullable,因此无论 IsThreeState 属性设置为 true 还是 false,您都需要处理 IsChecked 可以为 null 的事实。

你可以使用

Properties.Settings.Default.sound01 = msgOne.radioboxSound.IsChecked == true;

或使用上述的空合并运算符。

【讨论】:

  • 这确实解决了它,但你能解释一下我的理解吗? ??false -> 意思是,如果它无法以某种方式获取它,它将设置为 false?或者它有什么作用?
  • 没错。它是空值合并运算符,有效地简写为: msgOne.radioboxSound.IsChecked.HasValue ? msgOne.radioboxSound.IsChecked.Value:假;这本身就是 if(..) ... else ... 的简写形式
猜你喜欢
  • 1970-01-01
  • 2013-07-26
  • 2016-04-03
  • 2011-04-10
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多