vertical sublime opciones multiple menus lista hacer desplegable condicionada como codigo c# winforms datagridview datagridviewcomboboxcell

c# - sublime - menu desplegable vertical html



Abrir elementos de menĂº desplegable(en una vista de cuadrĂ­cula de datos) con un solo clic (3)

Puede lograr esto suscribiéndose al evento EditingControlShowing de la grilla y allí para el control de tipo ComboBox

ComboBox ctl = e.Control as ComboBox; ctl.Enter -= new EventHandler(ctl_Enter); ctl.Enter += new EventHandler(ctl_Enter);

Y en el evento Enter, use la propiedad

void ctl_Enter(object sender, EventArgs e) { (sender as ComboBox).DroppedDown = true; }

Dropped Down indica como el nombre sugiere si se muestra el área desplegable o no, por lo que cada vez que se ingrese el control, se establecerá en verdadero y se mostrarán los elementos sin necesidad de hacer más clics.

¿Cómo puedo evitar hacer doble clic en DropDownButton utilizado dentro de DataGridView ? Ahora puedo ver los elementos desplegables dentro de DataGridView haciendo clic dos o más veces. La primera vez que selecciona la celda y la segunda vez cuando hago clic en la flecha DropDownButton , muestra la lista. ¿Cómo puedo lograr lo mismo con un solo clic?


Establezca la propiedad EditMode de DataGridView en EditOnEnter : enlace

DataGridView.EditMode - Obtiene o establece un valor que indica cómo comenzar a editar una celda.

EditOnEnter - La edición comienza cuando la celda recibe el foco.


La "propiedad EditMode set de DataGridView para EditOnEnter" funcionó para mí, pero encontré otro problema: el usuario no puede eliminar una fila simplemente seleccionando y presionando la tecla SUPR. Entonces, una búsqueda en Google me dio otra forma de hacerlo. Simplemente capture el evento CellEnter y verifique si la celda es del tipo apropiado para realizar una acción apropiada como este código de muestra:

private void Form_OnLoad(object sender, EventArgs e){ dgvArmazem.CellEnter += new DataGridViewCellEventHandler(dgvArmazem_CellEnter); } void dgvArmazem_CellEnter(object sender, DataGridViewCellEventArgs e) { DataGridView dg = (DataGridView)sender; if (dg.CurrentCell.EditType == typeof(DataGridViewComboBoxEditingControl)) { SendKeys.Send("{F4}"); } }

Ahora el ComboBox cae más rápido y el usuario aún elimina una fila seleccionando una fila y presionando la tecla SUPR.

Eso es.