选择checkboxCombobox的一个值

时间:2011-12-16 12:01:52

标签: c# winforms visual-studio-2010 combobox checkbox

我正在使用多个checkboxcomboboxes。对于我的解决方案,其中一个盒子需要在特定情况下表现为组合框。我只需要选择一个值。我尝试了以下方法:

    private void PreDefSerials_SelectedValueChanged(object sender, EventArgs e)
    {
        if (!one_select)
            return;
        else
        {
            // set selected value
            if (PreDefSerials.SelectedIndex != 0)
            PreDefSerials.CheckBoxItems[PreDefSerials.SelectedIndex].CheckState = CheckState.Checked;
            return;
        }
    }

EDTI:

如何将项目的所有检查状态设置为未选中,并且aftwerwards将选中最新选定值的检查状态?

1 个答案:

答案 0 :(得分:1)

我不熟悉那个控件,所以我可能没有正确的语法,但我认为你可以尝试循环你的项目并“取消选中”任何已检查的内容。此外,您必须暂时关闭该事件,否则此事件可能会继续触发每个“取消选中”:

private void PreDefSerials_SelectedValueChanged(object sender, EventArgs e)
{
  if (!one_select)
    return;
  else
  {
    if (PreDefSerials.SelectedIndex > -1)
    {
      //only uncheck items if the current item was checked:
      if (PreDefSerials.CheckBoxItems[PreDefSerials.SelectedIndex].CheckState == CheckState.Checked)
      {
        // stop firing event for now:
        PreDefSerials.SelectedValueChanged -= PreDefSerials_SelectedValueChanged;

        for (int i = 0; i < PreDefSerials.CheckBoxItems.Count; i++)
        {
          if (i != PreDefSerials.SelectedIndex)
          {
            PreDefSerials.CheckBoxItems[i].CheckState = CheckState.Unchecked;
          }
        }

        // wire event again:
        PreDefSerials.SelectedValueChanged += PreDefSerials_SelectedValueChanged;
      }
    }
  }
}

这假定当您检查某个项目时,它将被检查并触发此事件。此代码只是遍历列表,然后“取消”其他所有内容。根据需要重构。

相关问题