visual studio que propiedades net eventos ejemplos datos agregar .net datagridview

.net - studio - eventos datagridview



¿Cómo se despliega manualmente un DataGridViewComboBoxColumn? (6)

Pude acercarme a lo que estás buscando estableciendo

DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter

Siempre que no se muestre el menú desplegable de otra celda, debe mostrarse el menú desplegable de la celda seleccionada inmediatamente.

Seguiré pensando y actualizando si surge algo.

Tengo un DataGridView con un DataGridViewComboBoxColumn en mi aplicación WinForms. Necesito desplegar (abrir) esta DataGridViewComboBoxColumn manualmente, digamos después de hacer clic en un botón.

La razón por la que necesito esto es porque he configurado SelectionMode en FullRowSelect y necesito hacer clic 2-3 veces para abrir el cuadro combinado. Quiero hacer clic en la celda del combobox y debería desplegarse inmediatamente. Quiero hacer esto con el evento CellClick, o ¿hay alguna otra manera?

Estoy buscando en Google y en la ayuda de VS, pero todavía no he encontrado ninguna información.

¿Alguien puede ayudar, por favor?


Sé que esta no puede ser la solución ideal, pero crea un cuadro combinado con un solo clic que funciona dentro de la celda.

Private Sub cell_Click(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick DataGridView1.BeginEdit(True) If DataGridView1.Rows(e.RowIndex).Cells(ddl.Name).Selected = True Then DirectCast(DataGridView1.EditingControl, DataGridViewComboBoxEditingControl).DroppedDown = True End If End Sub

donde "ddl" es la celda de cuadro combinado que agregué en la vista de cuadrícula.


Gracias ThisMat, tu solución funciona perfectamente.

Mi código en C #:

private void dataGridViewWeighings_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { return; // Header } if (e.ColumnIndex != 5) { return; // Filter out other columns } dataGridViewWeighings.BeginEdit(true); ComboBox comboBox = (ComboBox)dataGridViewWeighings.EditingControl; comboBox.DroppedDown = true; }


Gracias por la versión C #. Aquí está mi contribución a la búsqueda por nombres de columna combinados:

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e) { string Weekdays = @"MondayTuesdayWednesdayThursdayFridaySaturdaySunday"; if (Weekdays.IndexOf(dgv.Columns[e.ColumnIndex].Name) != -1) { dgv.BeginEdit(true); ComboBox comboBox = (ComboBox)dgv.EditingControl; comboBox.DroppedDown = true; } }


Estaba buscando una respuesta a esto también. Terminé escribiendo un sub genérico que podría llamarse desde cualquier DataGridView, ya que tenía muchas aplicaciones y quería que todas se comportaran de la misma manera. Esto funcionó bien para mí, así que quise compartirlo con cualquier persona que tropezó con esta publicación.

En el evento MouseClick para el DGV agrego el código

Private Sub SomeGrid_MouseClick(sender As Object, e As MouseEventArgs) Handles SomeGrid.MouseClick DGV_MouseClick(sender, e) End Sub

Que llama al siguiente sub que almaceno en un módulo compartido

Public Sub DGV_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Try Dim dgv As DataGridView = sender Dim h As DataGridView.HitTestInfo = dgv.HitTest(e.X, e.Y) If h.RowIndex > -1 AndAlso h.ColumnIndex > -1 AndAlso dgv.Columns(h.ColumnIndex).CellType Is GetType(DataGridViewComboBoxCell) Then Dim cell As DataGridViewComboBoxCell = dgv.Rows(h.RowIndex).Cells(h.ColumnIndex) If Not dgv.CurrentCell Is cell Then dgv.CurrentCell = cell If Not dgv.IsCurrentCellInEditMode Then dgv.BeginEdit(True) CType(dgv.EditingControl, ComboBox).DroppedDown = True End If End If Catch ex As Exception End Try End Sub

Nunca pillé ningún error, solo incluí el código Try..Catch para una rara instancia en la que no podía pensar que arrojara una excepción. No quería que al usuario le molestaran los mensajes de error para este escenario. Si el submarinista falla, lo más probable es que el DGV simplemente se comporte como siempre.