utiliza - manipular datagridview c#
Cómo activar el cuadro combinado en el primer clic(Datagridview) (5)
Cambié solo la propiedad EditMode
de datagridview
a EditOnEnter
y está funcionando perfectamente.
EditMode = EditOnEnter
En winforms, debe hacer clic en el cuadro combinado dos veces para activarlo correctamente: la primera vez para enfocarlo, la segunda vez para obtener la lista desplegable.
¿Cómo cambio este comportamiento para que se active en el primer clic?
Esto es para DATAGRIDVIEW combobox.
Establezca la propiedad DropDownStyle de su cuadro combinado en DropDownList ...
Establezca lo siguiente en su DataGridView:
EditMode = EditOnEnter
Esta es probablemente la solución más fácil y ha sido la solución para muchos usuarios aquí en SO cuando se hace esta pregunta.
EDITAR:
Por here haz lo siguiente:
Establecer el modo de edición:
EditMode = EditOnKeystrokeOrF2
Modifique el evento EditingControlShowing en la vista datagrid:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox ctl = e.Control as ComboBox;
ctl.Enter -= new EventHandler(ctl_Enter);
ctl.Enter += new EventHandler(ctl_Enter);
}
void ctl_Enter(object sender, EventArgs e)
{
(sender as ComboBox).DroppedDown = true;
}
Esto te dará los resultados deseados. Déjame saber si eso no lo hace.
Me doy cuenta de que esta es una pregunta antigua, pero pensé que le daría mi solución a cualquier persona que tenga que poder hacer esto.
Aunque no pude encontrar ninguna respuesta para hacer exactamente esto ... Encontré una answer a una pregunta diferente que me ayudó.
Esta es mi solución:
private void datagridview_CellEnter(object sender, DataGridViewCellEventArgs e)
{
bool validClick = (e.RowIndex != -1 && e.ColumnIndex != -1); //Make sure the clicked row/column is valid.
var datagridview = sender as DataGridView;
// Check to make sure the cell clicked is the cell containing the combobox
if(datagridview.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn && validClick)
{
datagridview.BeginEdit(true);
((ComboBox)datagridview.EditingControl).DroppedDown = true;
}
}
El código anterior debe estar vinculado al evento CellEnter de la vista de datos.
¡Espero que esto ayude!
editar: se agregó una verificación de índice de columna para evitar que se bloquee cuando se selecciona la fila completa.
Gracias, hasta toda la noche por la edición anterior.
edit2: el código ahora se vinculará a CellEnter en lugar de al evento CellClick.
Gracias, HaraldDutch por la edición anterior.
Si configura la cuadrícula completa en EditOnEnter, puede obtener una actividad bastante extraña cuando se encuentra en una columna de texto. Aquí está mi solución, que debería ser auto explicativa. Si no conocía los nombres de las columnas, simplemente puede marcar el tipo de celda en mousemove.
Private Sub GridView_CellMouseMove(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles GridView.CellMouseMove
Select Case GridView.Columns(e.ColumnIndex).Name
Case "Ad_Edit", "Size_Caption", "Demo_Code"
GridView.EditMode = DataGridViewEditMode.EditOnEnter
Case Else
GridView.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2
End Select
End Sub