none
Saber las coordenadas de las celdas de datagridview. RRS feed

  • Pregunta

  • Hola amigos del foro: estoy haciendo una aplicación para windows con VB.Nt 2012. Una de las ventanas consiste en un datagridview y quiero que usuario, al ubicarse en determinada celda, se despliegue una ventana emergente. El problema es que no se cuales son las coordenadas que tiene la celda para ubicar en el lado derecho o izquierdo dicha ventana emergente.

    ¿Cómo se hace?

    Gracias de antemano.

    lunes, 23 de noviembre de 2015 4:24

Respuestas

  • Puedes usar GetCellDisplayRectangle que te devuelve un tipo Rectangle con las coordenadas de la celda en el grid. A estas coordenadas le tienes que sumar las del propio grid. Algo como esyo:

    Private Sub MiGrid_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
    
    Dim Grid As DataGridView = CType(sender, DataGridView)
    Dim Rec as Rectangle
    Dim Dtp as DataTimePicker
    
    If e.ColumnIndex = 1 Then ' Si la coolumna es la que quiero
    
       Rec =    Grid.GetCellDisplayRectangle(Grid.CurrentCell.ColumnIndex, Grid.CurrentCell.RowIndex, False)
    
       Dtp.Location = New Point(Rec.Location.X + Grid.Location.X,    Rec.Location.Y + Grid.Location.Y)
       Dtp.BringToFront()
       Dtp.Show()
    
    End If
    
    End Sub


    Saludos, Javier J

    • Propuesto como respuesta legolas2024 lunes, 23 de noviembre de 2015 8:12
    • Marcado como respuesta Carlos Cuenta lunes, 23 de noviembre de 2015 15:05
    lunes, 23 de noviembre de 2015 8:09

Todas las respuestas

  • Puedes usar GetCellDisplayRectangle que te devuelve un tipo Rectangle con las coordenadas de la celda en el grid. A estas coordenadas le tienes que sumar las del propio grid. Algo como esyo:

    Private Sub MiGrid_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
    
    Dim Grid As DataGridView = CType(sender, DataGridView)
    Dim Rec as Rectangle
    Dim Dtp as DataTimePicker
    
    If e.ColumnIndex = 1 Then ' Si la coolumna es la que quiero
    
       Rec =    Grid.GetCellDisplayRectangle(Grid.CurrentCell.ColumnIndex, Grid.CurrentCell.RowIndex, False)
    
       Dtp.Location = New Point(Rec.Location.X + Grid.Location.X,    Rec.Location.Y + Grid.Location.Y)
       Dtp.BringToFront()
       Dtp.Show()
    
    End If
    
    End Sub


    Saludos, Javier J

    • Propuesto como respuesta legolas2024 lunes, 23 de noviembre de 2015 8:12
    • Marcado como respuesta Carlos Cuenta lunes, 23 de noviembre de 2015 15:05
    lunes, 23 de noviembre de 2015 8:09
  • Excelente Javier J, ya vi donde está mi error.

    Muchas grácias.

    lunes, 23 de noviembre de 2015 15:05