2010-06-25 31 views
15

Estoy buscando un control de lista desplegable que me permita seleccionar varios elementos. Algo parecido a CheckedListbox, pero en forma de lista desplegable (no quiero que ocupe una gran parte de la pantalla). En este punto, estoy bastante convencido de que no existe ese control incorporado en .NET.Winforms - lista desplegable de selección múltiple

Tenga en cuenta que esto es Winforms, no ASP.NET. ¿Alguna sugerencia?

+4

utilizan el control mencionado por Jim Lamb (http://www.codeproject.com/KB/combobox/extending_combobox.aspx), pero lo fijan mediante la aplicación de esta revisión de http://www.codeproject.com/KB/miscctrl/simplepopup.aspx en los foros, titulado "Solución para el problema de foco con PopupComboBox.": En 'Popupcombobox.cs', reemplace' ShowDropDown() 'con BeginInvoke (nuevo MethodInvoker (ShowDropDown)); en el método 'anulación protegida anular WndProc (ref Message m) '. Esto hizo que el enfoque funcionara para mí, hasta ahora se siente bien ahora. – Christian

Respuesta

21

Comprobar a cabo este proyecto en CodeProject:

+0

en serio? Por Dios Esto es exactamente lo que necesitaba. ¡Ojalá hubiera publicado esto hace 24 horas! Prestigio. – AlanR

+2

Al final abandoné esta casilla de verificación; no está tan bien pulida como pensé en un principio (en términos de reconocimiento de clics del mouse, autocompletado, etc.). Me conformé con usar un cuadro de diálogo emergente. Aún así, definitivamente vale la pena saber que esto existe. – AlanR

7

Hay otra solución:

La solución anterior es correcta para fijar el primer número, en el que requiere dos clics para entrar en la lista de casillas de verificación, sin embargo, esto presenta un nuevo problema cuando haces clic en el control para salir de él, conserva el foco y debes hacer doble clic para ir a otro control. Yo era capaz de solucionar este problema con el siguiente código:

En CheckBoxComboBox.cs Agregue la siguiente invalidación:

protected override void OnClick(EventArgs e) 
    { 
     base.OnClick(e); 
     this.Parent.Focus(); 
    } 

Con la respuesta de Rob P. y esta respuesta, no va a mantener el foco en cada clic evento.

+0

Otra solución más. Como lo resolvió Bat. Aunque es un truco, pero lo necesitaba. Porque su solución funciona bien, excepto al abrir el menú desplegable – Sami

1

Debería volver a mostrar el formulario desplegable, porque el siguiente código lo cierra.

El código que funciona es:

protected override void OnClick(EventArgs e) 
    { 
     base.OnClick(e); 
     this.Parent.Focus(); 
     this.dropdown.Show(this); 
    } 
Cuestiones relacionadas