填写复选框后,将显示一个ComboBox

时间:2017-10-09 21:53:22

标签: c# wpf checkbox combobox

我环顾四周,看到了一些与java相关的东西,但没有C#/ WPF。我试图做的只是问题所说的。例如,如果" Microsoft"检查我想要一个Combobox出现在第二个面板中,以便他们可以选择" Windows"," Xbox"或者你有什么。希望这个问题有道理。我做了一些谷歌搜索,但我仍然是编程新手,所以我可能只是缺少一些基本的东西。我试过这个

private void Microsoft_CheckStateChanged(object sender, EventArgs e)
    {
        comboBox_Copy.isEnabled = (Microsoft.CheckState == 
  CheckState.Checked);
    }

但它说CheckState在当前上下文中不存在,以及"组合框没有已启用的定义"

感谢您的帮助!

1 个答案:

答案 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;
  }
}

可见性属性显示或隐藏相关框。我只是根据盒子是否可见而取而代之。您可以交替使用事件参数来检查是否选中了复选框并以此方式响应。

希望它有所帮助。