none
Como saltar a una columna especifica de un datagridview? RRS feed

  • Pregunta

  • Hola todos quiero saber si en vb.net 2010 puedo saltar de una columna a otra, por ejemplo la 3 hasta la 6.

    y si no que se podría hacer?



    Saludos, Solph.

    • Cambiado Enrique M. Montejo sábado, 7 de abril de 2012 16:46 controles de Windows Forms (De:Lenguaje VB.NET)
    martes, 20 de marzo de 2012 17:19

Todas las respuestas

  • no se entiende muy bien tu pregunta...

    para referenciar las columnas de un datagridview deberias usar dgv.columns(numero de la columna)

    How to: manipulate columns in windows forms datagridview control

    martes, 20 de marzo de 2012 18:44
  • Hola Arturo Zerda, 

    Muchas gracias por tu disposición a colaborar. Lo que necesito es:

    estando en una fila cualquiera, en la columna 2 luego de validarla, pueda desactivar (inhabilitar, etc) varias columnas (por ejemplo de la 3 a la 5), y que el foco lo tome la celda de la fila actual que está en la columna 6.

    Tengo un procedimiento que cuando presiono 'Enter'  vaya a la siguiente columna (hace TAB). Pues bien, cuando llegue a la columna 2 y presione 'Enter' necesito que la siguiente celda activa sea la que esté en la columna 6.

    Espero que haya aclarado mejor lo que necesito.

    Gracias.


    Saludos, Solph.

    martes, 20 de marzo de 2012 20:10
  • ahora si, ya comprendo lo que quieres realizar...

    podrias deshabilitar las columnas y mandar el foco a la siguiente columna que se encuentre habilitada, las columnas del dgv supongo siempre son fijas, para tomar una columna especifica solamente deverias usar la propiedas Visible de la columna de esta forma datagridview1.columns[0].visible = false, si no sabes cual es la columna que se va a deshabilitar ya que lo haces por medio de un procedimiento que el usuario toma control sobre lo que pueda pasar en el, pudieras recorrer la columnas preguntando si la columna esta visible o no

    for each col as datagridviewcolumn in dgv.columns
    if col.visible = true then
    'aqui si la columna es visible
    else
    si la columna no es visible
    end if
    next
    'podrias posicionar el foco en el if, ya que siempre encontrara la ultima columna que se encuente visible

    espero te sea de ayuda
    miércoles, 21 de marzo de 2012 1:16
  • Hola Arthuro,

    Gracias, no obstante, necesito que se vean las columnas. Por ejemplo en el formulario en que trabajo, se evalúa el tipo de documento en que se trabaja. Si el tipo de documento no necesita seleccionar Frutas entonces de la columna Cant.  saltará a la última columna OK, pero si el tipo de documento requiere fruta entonces de la columna Cant. saltará a Fruta, y luego de la columna Descto saltará a Ok (después de haber calculado el Peso Neto y  Subtotal.

    Un punto más, a fin de que cuando presione 'Enter' el cursor salte a la siguiente columna utilizo la clase dgvPlus:

    ublic Class dgvPlus
        Inherits DataGridView   'Heredar del DataGridView
    
        'en el 'processDialogKey'... cuando estamos en edicion
    
        Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
    
            If keyData = Keys.Enter Then                'Si es 'enter'
                SendKeys.Send(Chr(Keys.Tab))            'Enviar un 'Tab'
                Return True                             'Marcar como procesado
            Else                                        'en caso contrario
                Return MyBase.ProcessDialogKey(keyData) 'devolver KeyData
            End If
        End Function
     
    End Class

    y luego mi dataGridView la baso en ella:

    Me.dgvDetalle = New Fruty.dgvPlus()

    Así que agradecería tu ayuda a este respecto.


    Saludos, Solph.

    miércoles, 21 de marzo de 2012 11:06