none
Escribir con mayusculas en una celda con datagridview

    Question

  • holas a todos...

    Alguien me puede ayudar con esto: quiero que en un datagridview cuando quiero insertar una fila nueva en la celda seleccionada me escriba solo con mayusculas!!! lo que intente hacer es capturar el evento Keypress pero por alguna razon no me esta entrando a ese evento cuando escribo en la celda! alguien tiene una solucion para eso?

    saludos y gracias 

    Monday, February 12, 2007 3:22 PM

Answers

  • Hermano te propongo lo siguiente:

     

     C#  (C SHARP)

    Code Snippet

    public partial class Form1 : Form

    {

    public Form1()

    {

    // Llamada necesaria para el Dise¤ador de Windows Forms.

    InitializeComponent();

    this.KeyPreview = true;

    this.KeyPress += new KeyPressEventHandler(Form1_KeyPress);

    }

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)

    {

    char S;

    S = Char.ToUpper(e.KeyChar);

    e.KeyChar = S;

    }

    }

     

     

    VB.Net

    Code Snippet

    Public Class Form1

    Public Sub New()

    ' Llamada necesaria para el Diseñador de Windows Forms.

    InitializeComponent()

    ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    Me.KeyPreview = True

    End Sub

     

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    Dim S As String

    S = UCase(e.KeyChar)

    S = ChrW(Asc(S))

    e.KeyChar = S

    End Sub

    End Class

     

    El codigo anterior no solo te convierte a mayusculas en el datagrid sino tambien cualquier control que contenga la propiedad Text

    Thursday, April 05, 2007 10:07 PM

All replies

  • Hola alfredo, no se que metodo uses apra insertar el contenido al datagridview, pero yo lo que hice fue simplemente comvertir a mayusculas los datos que quiero ingresar en el mismo, antes de mandarlos, pero bueno, habria que ver desde donde los mandas tu a los datos, supongo de deberia poder hacer d ela misma manerta, te paso el codigo, lo que hago es poner la cadena de texto a ingresar, (o variable que la contiene), anteponerle el Ucase("texto") listo.

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim a As String = "hola"

    grid.Rows.Add(UCase(a))

    End Sub

     

    Espero te sirva el ejemplo

    Saludos

    Tuesday, February 13, 2007 10:12 PM
  • Hola jose:

    Disculpame por la demora de contestar, estoy a full con un proyecto....

    Mira lo que quiero hacer es cuando inserto una fila nueva con el datagridview en las celdas mismas, restringir la escritura a mayuscula solamente, es decir que vos cuando insertas una linea nueva en el registro de la BD por medio del datagrid que sea en mayuscula pero que se vea cuanto insertas caracter por caracter el UPPER y no despues cuando lo grabas que eso si es facil por que lo pones en la instruccion SQL al UPPER! se entiende lo que quiero hacer? o es muy complicado :-(

     

    gracias y saludos....

    Friday, February 16, 2007 2:16 PM
  • Hermano te propongo lo siguiente:

     

     C#  (C SHARP)

    Code Snippet

    public partial class Form1 : Form

    {

    public Form1()

    {

    // Llamada necesaria para el Dise¤ador de Windows Forms.

    InitializeComponent();

    this.KeyPreview = true;

    this.KeyPress += new KeyPressEventHandler(Form1_KeyPress);

    }

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)

    {

    char S;

    S = Char.ToUpper(e.KeyChar);

    e.KeyChar = S;

    }

    }

     

     

    VB.Net

    Code Snippet

    Public Class Form1

    Public Sub New()

    ' Llamada necesaria para el Diseñador de Windows Forms.

    InitializeComponent()

    ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    Me.KeyPreview = True

    End Sub

     

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    Dim S As String

    S = UCase(e.KeyChar)

    S = ChrW(Asc(S))

    e.KeyChar = S

    End Sub

    End Class

     

    El codigo anterior no solo te convierte a mayusculas en el datagrid sino tambien cualquier control que contenga la propiedad Text

    Thursday, April 05, 2007 10:07 PM
  • muchas gracias por esta gran ayuda
    la necesitaba mucho
    Smile
    espero que les sriva esto

    es con sql

    ------------------------------------------------------------------------------------------------------
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    Public Class frmEditaGrilla
        Public cam1 As String
        Public cam2 As String
        Public cam3 As String
        Public cam4 As String
        Public cam5 As String
        Dim cod As Integer
        Dim c As New Conexion()
        Public da As SqlDataAdapter
        Public dt As DataTable
        Dim cn As New SqlConnection("server=localhost; pwd=; uid=sa; database=proyecto")
        Private Sub frmEditaGrilla_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Try
            '    '   Dim cn As SqlConnection
            '    'cn = New SqlConnection("workstation id =PCVIRTUAL;INTEGRATED SECURITY=SSPI;DATA SOURCE=PCINTEL; persist security info=False;INITIAL CATALOG=SQLventas")
            '    'cn = New SqlConnection("Server='pc'; User Id='sa'; Password=''; Database='SQLVentas'")
            '    '  cn = New SqlConnection("server=localhost; pwd=; uid=sa; database=proyecto")
            '    System.Windows.Forms.MessageBox.Show("Conexion Exitosa")
            'Catch ex As Exception
            '    System.Windows.Forms.MessageBox.Show("Error en Conexion")
            'End Try
            'c.conectaSQL()
            Llena_Grilla()
        End Sub

        Private Sub DataGridView1_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
            ''Observen que seguimos utilizando los ejemplos de clases, con la unica diferencia
            ''de que trabajamos con otro Evento de la Grilla, en este caso el Evento CellEndEdit
            ''este metodo se ejecuta despues de editar una celda, y observen que lo unico que
            ''nos interesa obtener es el campo cod_cli para realizar la modificacion de cualquier dato
            ''entonces obtenemos la fila seleccionada con el metodo CurrentRox.Index, y obtenemos los
            ''campos con Cell(i) para mandar los nuevos datos despues de modificar.
            'da = New OleDbDataAdapter("UPDATE cliente SET nom_cli = '" & cam1 & "', pat_cli = '" & cam2 & "', mat_cli = '" & cam3 & "', sex_cli = '" & cam4 & "', tel_cli = " & cam5 & " WHERE cod_cli = " & cod, cn)
            'dt = New DataTable
            'da.Fill(dt)
            '--------------modificar---------------
            'cod = Me.DataGridView1(0, Me.DataGridView1.CurrentRow.Index).Value
            Try
                'cam1 = Me.DataGridView1(0, Me.DataGridView1.CurrentRow.Index).Value
                'cam2 = Me.DataGridView1(1, Me.DataGridView1.CurrentRow.Index).Value
                'da = New SqlDataAdapter("UPDATE cliente SET nom_cli = '" & cam1 & "' WHERE cod_cli = " & cod, cn)
                'Dim dt As New DataTable
                'da.Fill(dt)
                cam1 = Me.DataGridView1(0, Me.DataGridView1.CurrentRow.Index).Value
                cam2 = Me.DataGridView1(1, Me.DataGridView1.CurrentRow.Index).Value
                cam3 = Me.DataGridView1(2, Me.DataGridView1.CurrentRow.Index).Value
                cam4 = Me.DataGridView1(3, Me.DataGridView1.CurrentRow.Index).Value
                cam5 = Me.DataGridView1(4, Me.DataGridView1.CurrentRow.Index).Value
                guardar()            '-----------------------------------------------------------------------------------
                MessageBox.Show("Fin de Edicion")
            Catch ex As Exception
                'MessageBox.Show(ex.Message)
            End Try





            'c.UPDdatos(Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(0).Value _
            '         , Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(1).Value _
            '         , Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(2).Value _
            '         , Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(3).Value _
            '         , Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(4).Value _
            '         , Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(5).Value)

            ''Tambien les dije que era imposible ver tantos eventos en el poco tiempo que teniamos asignado al curso
            ''de esta manera lo que tenemos que hacer es:
            ''  - Ver en la Ventana PROPIEDADES, en la etiqueta EVENTOS, para que sirven esos eventos
            ''  - Despues, verificar que es lo que obtienen los argumentos de entrada de cada evento
            ''    , en este caso observen lo que devuelve el codigo de abajo,
            ''      * e.RoxIndex, devuelve la fila actual seleccionada
            ''      * e.ColumnIndex, devuelve la columna seleccionada
            'MessageBox.Show(Me.DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)
            '' Tambien se puede hacer de la siguiente manera:
            'MessageBox.Show(Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(0).Value)
        End Sub
        Sub guardar()
            cn.Open()
            Dim cmd1 As New SqlCommand("insert into cliente(nom_cli, pat_cli, mat_cli,sex_cli,tel_cli) values ('" & cam1 & "','" & cam2 & "','" & cam3 & "','" & cam4 & "','" & cam5 & "')", cn)
            cmd1.ExecuteNonQuery()
            cn.Close()
        End Sub
        Sub Llena_Grilla()
            Dim dter As New SqlDataAdapter("select nom_cli, pat_cli, mat_cli, sex_cli,tel_cli from cliente ", cn)
            Dim dt As New DataTable
            dter.Fill(dt)
            Me.DataGridView1.DataSource = dt
            'Me.DataGridView1.DataSource = c.SELdatos("SELECT * FROM cliente")
        End Sub

    End Class
    -------------------------------------------------------------------------------------------------------------
    sirve para adicionar y modicar en un data grid

    Saturday, April 21, 2007 12:21 AM
  • Ayuda..
    Hola a todos.. tengo un problemon con el data grid de vb.net 2005
    Bueno, resulta que el datagrid al presionar enter en una fila, automaticamente pasa el enfoque a la siguiente fila.
    Bueno no se si se podrá, desactivar esa opcion del data grid, o algún metodo de como solucionar este problema...
    Quisiera que el datagrid no envie el enfoque hacia la siguiente fila cuando presiono enter, quisiera hacerlo por codigo. asi como el flexgrid de vb6.
    Todo estaba bien con el datagrid, hasta que llegué a toparme con esta chorrada..
    Bueno agradeceria si me pudiesen ayudar urgeeeeeeeeeeeeeeeente por favor...
    Saturday, September 01, 2007 3:18 AM
  • Sabes no uso el DataGrid pero si uso el DataGridView y este solo le establezco las propiedades FullRowSelect a true y ya, la forma de establecer los datos en el datasource son las misma que las de el datagrid, este en mi parecer tiene propiedades mejores para la la navegacion de los datos si te interesa puedo enviarte codigo preelaborado con el datagridview que he utilizado en mis aplicaciones

     

    Wednesday, September 05, 2007 11:33 PM
  •  

    Alguien tendra algun ejemplo o sabe como hacerlo?

     

    por que no quiero que brinque al siguiente dato sino quiero manipular la informacion que esta seleccionada al dar enter.

     

     

    grax

    Friday, August 22, 2008 3:34 PM
  • Eduardo1:

    Podrias ser mas especifico para poder ayudar.
    Friday, August 22, 2008 11:40 PM
  •  

    Tengo un datagridview con informacion, y al dar Enter sobre una de las celdas o renglones que es como lo tengo configurado, necesito que en vez de que salte un renglon hacia abajo en foco, que me devuelva la informacion del datagridview de donde estaba el foco de donde di un Enter.

     

    rgax.

    Friday, August 22, 2008 11:53 PM
  • Con esto, vas a poder capturar la informacion de la celda actual de tu gridview..

    Utilizas el evento keydown en lugar del keypress... asi

    Private Sub MiGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles gv_clasificacion.KeyDown
            If e.KeyValue = Keys.Enter Then
                InformacionARecuperar = MiGridView.Rows(MiGridView.CurrentCell.RowIndex).Cells(IndiceColumna).Value
            End If
    End Sub


    eso es todo..
    Saturday, August 23, 2008 4:36 PM
  • efectivamente ahi estaba el detalle, estaba utilizando el evento keypress en lugar de keydown.

     

     

    grax. y saludos...

     

    Saturday, August 23, 2008 5:10 PM
  • Gracias a mi me funciono exelente!!!

     

    Tuesday, January 06, 2009 9:56 PM
  • Esto te puede servir ( Gracias a http://eurecadigital.wordpress.com/)

    En este Evento se muestra como forzar que lo que se escribe en la primera columna de la celda se escriba en MAYUSCULAS.

     private void dgRejilla_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

            {

                if (e.Control is TextBox)

                {

                    if (dgRejilla.CurrentCell.ColumnIndex == 1)

                       //Pone en mayúsculas la primera celda de la rejilla

                        ((TextBox)e.Control).CharacterCasing = CharacterCasing.Upper;

                    else

                        ((TextBox)e.Control).CharacterCasing = CharacterCasing.Normal;

                }

            }

    Tuesday, August 11, 2009 4:14 PM
  • Bueno no se a ustedes pero este codigo me funciono a la perfeccion.

    Monday, September 20, 2010 6:25 PM
  • Muchas Muchas gracias me has ayudado mucho, no hayaba como convertirlo a mayusculas sin que estas estuvieran invertidas ...

     

    gracias Isidro A. Lopez

    Wednesday, September 29, 2010 6:30 AM
  • excelente, me sirvio mucho

    DAED Soft

    Monday, May 07, 2012 9:36 PM