我是 C# 和 Visual Studio 的新手,之前在 Visual Basic 中做过一些工作。非常感谢任何帮助。
我正在尝试获取一个表单来根据是否选中复选框来更改变量。 因此,用户单击按钮,变量就会有一个值,但如果选中该复选框,它就会有另一个值。
所以我正在努力
if (Othersite.Checked)
site = "Site B";
else
site = "Site A";
如果我这样写,底部的消息会显示“Togglebutton.checked 必须位于+=或-=”的左侧
但是,如果我放
if(其他站点。已检查 += true) 站点=“站点B”; 别的 站点=“站点A”;
错误是“CS0029无法将类型‘bool’隐式转换为‘System.Windows.RoulatedEventHandler’”
我哪里出错了?
我试着在这里环顾四周,但没有看到任何太相似的东西。或者结果在视觉工作室中不起作用。
从注释转移,在 WPF 应用程序中要获取
CheckBox
状态,您应该使用 IsChecked
属性:
private void SomeMethod()
{
if (Othersite.IsChecked)
site = "Site B";
else
site = "Site A";
// or use ternary assignment:
// site = $"Site {(Othersite.IsChecked ? "B" : "A")}";
}
我认为这种误解的罪魁祸首是 Windows 窗体,其中
CheckBox
状态存储在 Checked
属性中(没有“Is”前缀)。如果您从 Windows 窗体迁移到 WPF,这可能会令人困惑。
WPF CheckBox 中的 Checked
变成了 event
,当您检查 CheckBox 时会触发。