Как добавить флажок внутри выпадающего списка в C # - PullRequest
10 голосов
/ 11 мая 2011

Я хочу добавить флажок внутри comboBox в C #. Моя цель состоит в том, чтобы пользователь мог выбрать несколько значений из одного ComboBox (Отметить все и снять все).

Пожалуйста, помогите

Ответы [ 3 ]

7 голосов
/ 11 мая 2011

Вы должны расширить элемент управления ComboBox, предоставив собственную стратегию рендеринга и добавив CheckBox «вручную».

Эти проекты с открытым исходным кодом готовы к использованию:

http://www.codeproject.com/KB/combobox/CheckComboBox.aspx http://www.codeproject.com/KB/combobox/extending_combobox.aspx

3 голосов
/ 11 мая 2011

ИМХО, это неправильное использование элемента управления ComboBox, потому что у пользователя нет возможности увидеть свой выбор.Для множественного выбора я рекомендую рассмотреть CheckedListBox control ссылка на MSDN

0 голосов
/ 03 июля 2011

Существует элемент управления с открытым исходным кодом ASP.NET на http://dropdowncheckboxes.codeplex.com/, который я использовал и был очень доволен.Существует также элемент управления с открытым исходным кодом WinForms на http://www.codeproject.com/KB/combobox/extending_combobox.aspx, который выглядит не так сильно, но, возможно, кто-то мог бы объединить лучшее из обоих.Если все реализовано правильно, это действительно отличное дополнение к вашему инструментарию.Вышеупомянутые 2 реализации показывают все выбранные элементы и дают вам ряд связанных флажков в уменьшенной области и с отличной группировкой.Мое добавление к версии ASP.NET состояло в том, чтобы разрешить списку проверенных файлов использовать только имена файлов вместо полных путей, если это становится слишком длинным.См. Ссылку выше для полного кода.Ниже приведено только мое дополнение, которое вызывается вместо UpdateSelection в вашем обработчике обратной передачи:

// Update the caption assuming that the items are files 
// If the caption is too long, eliminate paths from file names 
public void UpdateSelectionFiles(int maxChars) { 
  StringBuilder full = new StringBuilder(); 
  StringBuilder shorter = new StringBuilder(); 
  foreach (ListItem item in Items) { 
    if (item.Selected) { 
      full.AppendFormat("{0}; ", item.Text);
      shorter.AppendFormat("{0}; ", new FileInfo(item.Text).Name); 
    } 
  } 
  if (full.Length == 0) Texts.SelectBoxCaption = "Select..."; 
  else if (full.Length <= maxChars) Texts.SelectBoxCaption = full.ToString(); 
  else Texts.SelectBoxCaption = shorter.ToString(); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...