2011-05-11 12 views
8

Quiero agregar una casilla de verificación dentro de comboBox en C#. Mi propósito es que el usuario pueda seleccionar múltiples valores de un ComboBox (marcar todo y desmarcar todo).Cómo agregar la casilla de verificación dentro del cuadro combinado en C#

Por favor ayuda

+1

¿Está tan limitado en el espacio como este? ¿Cuántas casillas de verificación habría? – ariel

+0

@ariel: Quiero vincular desde la base de datos. –

+4

Esto realmente no es una buena idea. Los usuarios no esperan ver casillas de verificación en un cuadro combinado. Utilice uno de los otros controles explícitamente diseñados para esto, como un 'CheckedListBox' o incluso mejor, un' ListView'. –

Respuesta

2

en mi humilde opinión, es un mal uso del control ComboBox, porque el usuario no tiene la posibilidad de ver a su elección. Para selección múltiple que recomendamos tener en cuenta el control CheckedListBox link to MSDN

0

Hay un control de código fuente abierto en ASP.NET http://dropdowncheckboxes.codeplex.com/ que he utilizado y ha sido muy feliz. También hay un control de fuente abierta de WinForms en http://www.codeproject.com/KB/combobox/extending_combobox.aspx que no parece tan fuerte pero quizás alguien podría combinar lo mejor de ambos. Si está bien implementado, esto es realmente una gran adición a su conjunto de herramientas. Las 2 implementaciones anteriores muestran todos los elementos seleccionados y le dan una cantidad de casillas de verificación relacionadas en un área reducida y con una excelente agrupación. Mi incorporación a la versión de ASP.NET fue permitir que una lista de archivos marcados usara sólo nombres de archivo en lugar de rutas completas si esto se hace demasiado largo. Ver el enlace de arriba para el código completo. Debajo está solo mi adición que se llama en lugar de UpdateSelection en su controlador de devolución de datos:

// 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(); 
} 
Cuestiones relacionadas