当填充复选框时显示组合框出现
问题描述:
我环顾四周,看到一些与java相关的内容,但对于C#/ WPF没有任何意义。我想要做的就是这些问题所说的。例如,如果选中“Microsoft”,我希望Combobox出现在第二个面板中,以便他们可以选择“Windows”,“Xbox”或您有什么。希望这个问题有道理。我做了一些Google搜索,但在编程方面我仍然很新,所以我可能只是缺少一些基本的东西。我想这当填充复选框时显示组合框出现
private void Microsoft_CheckStateChanged(object sender, EventArgs e)
{
comboBox_Copy.isEnabled = (Microsoft.CheckState ==
CheckState.Checked);
}
但它说CheckState不会在目前的情况下存在,以及“组合框不具备启用定义”
感谢您的帮助!
答
编辑:请参考下面的代码,我相信会更接近你的方法,并应该解决你的问题..我相信你的问题在于两个不同的部分。您正在尝试在可见性变量的位置使用isEnabled变量,我认为它更适合该任务。你也试图在两种不同的变量类型之间使用等效运算符(等于),因为从勾号或未勾选的框输出的结果不是布尔输出,至少不是我见过的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;
}
}
的visability属性显示或隐藏有问题的盒子。我只是根据盒子是否可见或不在首位进行了替换。您可以交替使用事件参数来检查是否选中了复选框并以此方式进行响应。
希望它有帮助。