none
HABILITAR BOTÓN MODIFICAR AL EDITAR CELDA DATAGRIDVIEW C# RRS feed

  • Pregunta

  • Hola, buenos días, tengo un datagridview enlazado a datos, también tengo un botón modificar que inicialmente tiene la propiedad ENABLED = FALSE, para editar los datos de la celda del datagridview utilizo el evento EditingControlShowing, deseo que cuando el usuario comience a editar una celda, en ese momento se habilite el botón modificar caso contrario si la celda a editar se encuentra vacía o se ha borrado la información de la misma el botón se deshabilite.

    Cualquier ayuda estaré muy agradecido.

    lunes, 20 de febrero de 2017 15:01

Respuestas

  • Hola JCORBETTO,

    Puedes hacer uso del evento CellBeginEdit para habilitar el botón, ya que este evento se ejecuta cuando se inicia el modo edición en la celda seleccionada.

    private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
    {
        button1.Enabled = true;
    }

    También, aplicando la misma técnica podrías utilizar el evento CellEndEdit el cual se ejecuta cuando se termina el modo edición de la celda, ahí podrías inhabilitar el botón.

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        button1.Enabled = false;
    }

    Ya que usas el evento EditingControlShowing podrías castear la celda a un tipo TextBox y enlazarle a un evento TextChanged para desactivar el botón si está vacío.

    private void dataGridView1_EditingControlShowing(object ......
    {
        (e.Control as TextBox).TextChanged += validarContenido;
    }
    
    private void validarContenido(object sender, EventArgs e)
    {
        button1.Enabled = (sender as TextBox).Text.Trim() != string.Empty;
    }

    Resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Propuesto como respuesta Joyce_ACModerator lunes, 20 de febrero de 2017 16:05
    • Marcado como respuesta JCORBETTO lunes, 20 de febrero de 2017 16:19
    lunes, 20 de febrero de 2017 15:37
  • Hola JCORBETTO,

    Pero si se arrepiente y sigue en modo edición solo bastaría usar 'CTRL + Z' y el valor borrado o cambiando reaparecería.

    O también podrías hacer es crearte un variable 'x' que almacene el valor de la celda en el evento 'CellBeginEdit' antes de que la edite tomas el valor, y luego el usuario escribe, borra, etc. Si luego quiere cancelar obtendrías el valor inicial de la variable asignándole .Value de la celda.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta JCORBETTO lunes, 20 de febrero de 2017 16:48
    lunes, 20 de febrero de 2017 16:39

Todas las respuestas

  • Hola JCORBETTO,

    Puedes hacer uso del evento CellBeginEdit para habilitar el botón, ya que este evento se ejecuta cuando se inicia el modo edición en la celda seleccionada.

    private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
    {
        button1.Enabled = true;
    }

    También, aplicando la misma técnica podrías utilizar el evento CellEndEdit el cual se ejecuta cuando se termina el modo edición de la celda, ahí podrías inhabilitar el botón.

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        button1.Enabled = false;
    }

    Ya que usas el evento EditingControlShowing podrías castear la celda a un tipo TextBox y enlazarle a un evento TextChanged para desactivar el botón si está vacío.

    private void dataGridView1_EditingControlShowing(object ......
    {
        (e.Control as TextBox).TextChanged += validarContenido;
    }
    
    private void validarContenido(object sender, EventArgs e)
    {
        button1.Enabled = (sender as TextBox).Text.Trim() != string.Empty;
    }

    Resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Propuesto como respuesta Joyce_ACModerator lunes, 20 de febrero de 2017 16:05
    • Marcado como respuesta JCORBETTO lunes, 20 de febrero de 2017 16:19
    lunes, 20 de febrero de 2017 15:37
  • Hola Joel, gracias por responder, lo probé y funcionó perfecto, solo una consulta mas si edito una celda del datagridview y se habilita el botón pero luego me arrepiento y decido que es otra celda de otra fila que quiero editar, hay alguna manera de que al perder el foco en la celda que inicialmente se modificó, regrese a su valor anterior.

    De antemano muchas gracias por su atención prestada.

     
    • Editado JCORBETTO lunes, 20 de febrero de 2017 16:28 corrección de texto
    lunes, 20 de febrero de 2017 16:27
  • Hola JCORBETTO,

    Pero si se arrepiente y sigue en modo edición solo bastaría usar 'CTRL + Z' y el valor borrado o cambiando reaparecería.

    O también podrías hacer es crearte un variable 'x' que almacene el valor de la celda en el evento 'CellBeginEdit' antes de que la edite tomas el valor, y luego el usuario escribe, borra, etc. Si luego quiere cancelar obtendrías el valor inicial de la variable asignándole .Value de la celda.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta JCORBETTO lunes, 20 de febrero de 2017 16:48
    lunes, 20 de febrero de 2017 16:39
  • Gracias Joel por responder, con CTRL + Z no me funcionó pero si con la tecla ESC. Muchas gracias por la atención brindada.
    lunes, 20 de febrero de 2017 16:50