Principales respuestas
Saber las coordenadas de las celdas de datagridview.

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.
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
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
-