.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.
Pude activar el cuadro combinado y desplegarlo con un solo clic del mouse estableciendo la propiedad EditMode de DataGridView en EditOnEnter y creando el evento EditingControlShowing y agregué el código para desplegar el cuadro combinado en este evento.
Para obtener más detalles, consulte http://newapputil.blogspot.in/2015/08/add-combo-box-in-cell-of-datagridview.html