web-dev-qa-db-fra.com

Comment ajouter une case à cocher dans la liste déroulante en c #

Je veux ajouter une case à cocher dans comboBox en C #. Mon objectif est que l'utilisateur puisse sélectionner plusieurs valeurs dans une zone de liste déroulante (cocher tout et décocher tout).

S'il vous plaît aider

10
Vyas Dev

Vous devez étendre le contrôle ComboBox en fournissant votre propre stratégie de rendu et en ajoutant "manuellement" une CheckBox.

Ces projets open source sont prêts à être utilisés:

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

7
Larry

IMHO, c'est une mauvaise utilisation du contrôle ComboBox, car l'utilisateur n'a aucune possibilité de voir son choix. Pour la sélection multiple, je vous recommande d’envisager le contrôle CheckedListBox lien vers MSDN

3
Allender

Il y a un contrôle open source ASP.NET à http://dropdowncheckboxes.codeplex.com/ que j'ai utilisé et que je suis très content. Il existe également un contrôle open source WinForms à http://www.codeproject.com/KB/combobox/extending_combobox.aspx qui n’a pas l’air aussi fort, mais quelqu'un pourrait combiner le meilleur des deux. S'il est bien mis en œuvre, il constitue un excellent ajout à votre boîte à outils. Les 2 implémentations ci-dessus montrent tous les éléments sélectionnés et vous donnent un certain nombre de cases à cocher associées dans une zone réduite et avec un excellent regroupement. Mon ajout à la version ASP.NET consistait à autoriser une liste de fichiers vérifiés à utiliser uniquement des noms de fichiers au lieu de chemins complets, si cela devenait trop long. Voir le lien ci-dessus pour le code complet. Voici juste mon ajout qui s'appelle à la place de UpdateSelection dans votre gestionnaire de publication:

// 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(); 
} 
0
Mick Bruno