выберите одно значение checkboxCombobox - PullRequest
1 голос
/ 16 декабря 2011

Я использую несколько 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:

как я могу установить все контрольные наборы элементов в невыбранные и после этого сделать контрольное состояние последнего выбранного значения в выбранном?

1 Ответ

1 голос
/ 16 декабря 2011

Я не знаком с этим элементом управления, поэтому у меня может быть не весь синтаксис правильный, но я думаю, что вы можете попытаться перебрать все элементы и "снять" все, что было проверено.Кроме того, вам придется временно отключить событие, иначе это событие, вероятно, будет продолжать срабатывать при каждом снятии флажка:

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

Это предполагает, что при проверке элемента оно будетпроверьте и запустите это событие.Этот код просто проходит по списку, а затем «снимает» все остальное.Рефакторинг по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...