我环顾四周,看到了一些与java相关的东西,但没有C#/ WPF。我试图做的只是问题所说的。例如,如果" Microsoft"检查我想要一个Combobox出现在第二个面板中,以便他们可以选择" Windows"," Xbox"或者你有什么。希望这个问题有道理。我做了一些谷歌搜索,但我仍然是编程新手,所以我可能只是缺少一些基本的东西。我试过这个
private void Microsoft_CheckStateChanged(object sender, EventArgs e)
{
comboBox_Copy.isEnabled = (Microsoft.CheckState ==
CheckState.Checked);
}
但它说CheckState在当前上下文中不存在,以及"组合框没有已启用的定义"
感谢您的帮助!
答案 0 :(得分:1)
编辑:请参考下面的代码我相信会更接近你的方法并应该解决你的问题。我相信你的问题在于两个不同的部分。你试图在可见性变量的位置使用isEnabled变量,我相信它更适合于任务。此外,您还尝试在两个不同的变量类型之间使用等效运算符(Equals),因为勾选或未勾选的框的输出不是布尔输出,至少不是我在WPF中看到的。
private void Microsoft_CheckStateChanged(object sender, EventArgs e)
{
var resultFromCheckBox = sender as CheckBox; // This line acts as a link between the check box (i.e. Microsoft) and this function so you can use resultFromCheckBox instead of Microsoft.
if (resultFromCheckBox.CheckState == CheckState.Checked)
{
comboBox_Copy.Visibility = System.Windows.Visibility.Visible; // Sets box to visible if checkbox is selected
}
else
{
comboBox_Copy.Visibility = System.Windows.Visibility.Hidden; // Sets to hidden in all other cases i.e. when it is not selected.
}
}
上一个回答:
至少在Windows窗体中显示的代码,我相当确定它在WPF中是相似的,它将允许控件变为活动状态(它可以与之交互)。可见性变量可能更有用。
我相信您正在寻找的代码与以下内容类似:
private void Microsoft_CheckStateChanged(object sender, EventArgs e)
{
if (comboBox_Copy.Visibility != System.Windows.Visibility.Visible)
{
comboBox_Copy.Visibility = System.Windows.Visibility.Visible;
}
else
{
comboBox_Copy.Visibility = System.Windows.Visibility.Hidden;
}
}
可见性属性显示或隐藏相关框。我只是根据盒子是否可见而取而代之。您可以交替使用事件参数来检查是否选中了复选框并以此方式响应。
希望它有所帮助。