Encontré una solución más simple y pensé que la publicaría si alguien que buscaba como yo pudiera usarla. Lo que hice fue insertar una vista de lista de una sola columna en mi formulario con Vista configurada en modo Detalles, MultiSeleccionar establecido en Verdadero y Casillas de verificación configuradas en Verdadero. El siguiente código permitirá que la lista se despliegue. Como tengo una selección múltiple, no es necesario mostrar el valor seleccionado como lo haría en un cuadro combinado, por lo que el menú desplegable parece ser un botón para Mostrar/Ocultar la lista. En el siguiente código, estoy dividiendo la altura entre 4 porque mi lista es estática y esa es la cantidad de casillas de verificación que tengo en mi lista. Si tiene una lista dinámica, simplemente lea la cantidad de elementos de Listview y úselos. Puede que tenga que jugar con él para obtener la apariencia que desea.Aquí están los eventos que utilizo:
Dim iListHt As Integer 'Set global variable to save height of list
'Save initial height of list and then collapse it to a button
iListHt = lvList.Height
lvList.Height = CInt(iListHt/4)
lvList.Columns(0).Text = "Display List"
Private Sub lvList_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lvList.ColumnClick
Dim iHt As Integer = lvList.Height
If (iHt < iListHt) Then
lvList.Height = iListHt
lvList.Columns(0).Text = "Hide List"
Else
lvList.Height = CInt(iHt/4)
lvList.Columns(0).Text = "Display List"
End If
lvList.Refresh()
End Sub
Private Sub lvList_ItemChecked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckedEventArgs) Handles lvList.ItemChecked
'Read values from list check boxes and update settings
UpdateSettings()
End Sub
El evento ColumnClick maneja al hacer clic en lo que parece el botón Mostrar/Ocultar la lista y el evento ItemChecked deja que me encargue de todo lo que tiene que responder a un cambio en las casillas de verificación . El valor de cada uno se lee accediendo al valor "lvList.Items (iRowNum). Chequeado" donde iRowNum es la fila que desea verificar. Espero que esto ayude a la siguiente persona que necesita algo como esto.
hground
Usando este tipo de enfoque (nota: no necesariamente recomendado), me quedaría con la lista desplegable, pero cuando se abra la parte desplegable, superponga una lista de casilla de verificación. –
que es una muy buena idea, muchas gracias – Iulian