extraño problema con DataGridViewComboBoxCell, tratando a los cambios de confirmación automática

StackOverflow https://stackoverflow.com/questions/4400679

Pregunta

Así que mi objetivo es una vez que un usuario hace clic en el elemento de la lista desplegable, la célula llamará automáticamente EndEdit (). Lo más raro es que el código de abajo voluntad de trabajo en la 2ª-n ComboBoxesCells que yo menú desplegable y seleccionar los valores de la primera, pero nunca uno. ¿Hay algo que me falta aquí ??

        protected override void OnCellClick(DataGridViewCellEventArgs e)
        {
            base.OnCellClick(e);

            DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
            if (control != null)
            {
                   control.DropDownClosed += new EventHandler(control_DropDownClosed);
            }
        }

            void control_DropDownClosed(object sender, EventArgs e)
            {
                this.EndEdit();
                DataGridViewComboBoxEditingControl control = sender as DataGridViewComboBoxEditingControl;
                control.DropDownClosed -= new EventHandler(control_DropDownClosed);
            }

En caso de añadir aquí que estoy heredando de DataGridView si eso no es obvio

¿Fue útil?

Solución

Cuando algo así como " Lo más raro es que el código de abajo trabajos voluntad en la 2ª-n ComboBoxesCells que yo menú desplegable y seleccione Valores de pero nunca el primero " sucede, es a menudo debido a la evento ocurre antes de que algo que necesita que se hace.

esta viendo su ejemplo, yo diría que la primera vez, cuando se hace clic,

DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;

le da control == null.

Tal vez debería cambiar el evento elegido hacer tus cosas de Click a SelectedIndexChanged o SelectedValueChanged?

Espero que esta ayuda,

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top