2009-07-10 21 views
6

Tengo DataGridView donde una de las columnas es DataGridViewComboBoxColumn. Cuando se llena la cuadrícula, esa columna se ve diferente debido a la flecha desplegable que aparece en cada celda de la columna. Me gustaría cambiar esto para que la flecha desplegable esté oculta y solo aparezca cuando la fila esté realmente resaltada o cuando se seleccione la celda del cuadro combinado para su edición. El comportamiento que quería es como la ventana Propiedades de en Visual Studio maneja sus valores.¿Cómo puedo ocultar la flecha desplegable de un DataGridViewComboBoxColumn como la ventana Propiedades de Visual Studio?

Respuesta

9

En el DataGridViewComboBoxColumn, hay una propiedad llamada DisplayStyle. Configurarlo para Nothing para ocultar la DropDownButton

Más información sobre el DataGridViewComboBoxDisplayStyle enumeración está disponible en este MSDN link

+0

¡Perfecto! Justo lo que estaba buscando. – dawntrader

+2

En ese caso, podría ser una buena idea marcarlo como la respuesta aceptada – Joe

+1

La configuración 'DataGridViewComboBoxColumn.DisplayStyleForCurrentCellOnly = True' es otra opción. – SSS

0

Me tomó un tiempo para encontrar esto, pero lo anterior era la respuesta mezclada con un par de otras páginas.

Esta es la forma de ocultar el menú desplegable de una cuadrícula basándose en un valor en uno diferente. El valorToCheck debe estar en una celda antes del que contiene el menú desplegable que desea ocultar.

Private Sub dgv_CellPainting(ByVal sender As Object, ByVal e As 
     DataGridViewCellPaintingEventArgs) Handles dgv.CellPainting 

    'Pages Grid needs to be edited when rendering 
    If (e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0) Then 
     Dim valueToCheck = dgv.Rows(e.RowIndex).Cells(2).Value 

     If (valueToCheck <> "True") Then 
      Dim thisCol = DirectCast(dgv.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell) 
      thisCol.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing 
      e.PaintBackground(e.ClipBounds, False) 
      e.Handled = True 
     End If 
    End If 

End Sub 
0

Si establece DataGridViewComboBoxColumn.DisplayStyleForCurrentCellOnly = True, a continuación, en el menú desplegable sólo aparece cuando la célula es la célula actual.

Cuestiones relacionadas