none
Propiedad para digitar todo en mayúscula dentro de un DataGridView RRS feed

  • Pregunta

  • Como puedo hacer para que al momento de ingresar datos dentro de un DataGridView, todos sean en mayúscula por defecto, existe alguna propiedad?

    Nota: Tener en cuenta que en mi DataGridView tengo columnas con ComboBox, puse el siguiente código pero me da error al seleccionar un dato en la columna del ComboBox:

    private void dgvVinculados_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
       DataGridView dgv = ((DataGridView)sender);
    
       TextBox tb = ((TextBox)dgv.EditingControl);
    
       if (dgv.CurrentCell.ColumnIndex == 1)
       {
          tb.CharacterCasing = CharacterCasing.Upper;
       }
       else
       {
          tb.CharacterCasing = CharacterCasing.Upper;
       }
    }

    

    Gracias por su apoyo.


    Alexander Daniel Perú

    viernes, 8 de febrero de 2019 18:13

Respuestas

  • hola

    Podrias aplicar la conversion controlando la columna donde aplicas el upper entonces sabes que esa columna seran todas textbox

    private void dgvVinculados_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
    
        if (dgv.CurrentCell.ColumnIndex == 1)
        {
            TextBox tb = ((TextBox)e.Control);
            tb.CharacterCasing = CharacterCasing.Upper;
        }
    
    }

    Sino la alternativa es convertir pero sin que falle usando el as

    private void dgvVinculados_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
    
        TextBox tb = e.Control as TextBox;
        if (tb != null)
        {
            tb.CharacterCasing = CharacterCasing.Upper;
        }
    
    }

    asi puedes validar si es null entonces no es un textbox, esto aplicara a todas las celdas del grid


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 8 de febrero de 2019 18:34

Todas las respuestas

  • Hola Alexander,

    Lo que se me ocurre que hagas es que captures el evento DataGridView.CellValueChanged Event y ahi cada vez que se produzca el cambio de el valor de la celda transformarlo a mayúsculas.

    viernes, 8 de febrero de 2019 18:32
  • hola

    Podrias aplicar la conversion controlando la columna donde aplicas el upper entonces sabes que esa columna seran todas textbox

    private void dgvVinculados_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
    
        if (dgv.CurrentCell.ColumnIndex == 1)
        {
            TextBox tb = ((TextBox)e.Control);
            tb.CharacterCasing = CharacterCasing.Upper;
        }
    
    }

    Sino la alternativa es convertir pero sin que falle usando el as

    private void dgvVinculados_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
    
        TextBox tb = e.Control as TextBox;
        if (tb != null)
        {
            tb.CharacterCasing = CharacterCasing.Upper;
        }
    
    }

    asi puedes validar si es null entonces no es un textbox, esto aplicara a todas las celdas del grid


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 8 de febrero de 2019 18:34
  • Leando, el segundo ejemplo me sirvío, muchas gracias.

    Alexander Daniel Perú

    viernes, 8 de febrero de 2019 19:36