2012-03-08 32 views
8

Tengo un formulario de Windows con un calendario que está oculto. Quiero mostrar el formulario justo debajo de la celda actual de un DataGridView. La posición cambia según la posición de la celda actual.¿Cómo puedo obtener la posición actual de la celda xey en un DataGridView?

No quiero la celda actual o la columna actual, quiero la posición para poder establecer la ubicación de mis formularios de fecha.

Aquí es lo que estoy usando, pero no su trabajo:

int po_X = paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Left+paygrid.Left; 
int po_Y = paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Bottom+paygrid.Top; 
form_date.Location = new System.Drawing.Point(po_X, po_Y); 

Respuesta

10

Puede utilizar el método paygrid.PointToScreen().

form_date.Location = paygrid.PointToScreen(
    paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location); 
+0

muchas gracias much..it funcionaba perfectamente – user1231584

0

Puede intentar

[DllImport("user32.dll", EntryPoint = "GetCursorPos")] 
private static extern bool GetCursorPos(out Point lpPoint); 

y llamada a un método como

Point pt; 
GetCursorPos(out pt); 

pt proporcionará x e y.

+0

Gracias pero no quiero que la ge posición del cursor quiero la posición de la celda actual en datagridview..y ya tienes mi answear de watbywbarif – user1231584

1

Es posible que desee probar esto:

Lookup_Account.Left = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Left 
Lookup_Account.Top = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Top 
+1

¡Bienvenido a StackOverflow! Por favor, agregue una breve explicación sobre su código. ¿Por qué y cómo funciona? – Aurasphere

0
Rectangle cellRect = paygrid.GetCellDisplayRectangle(e.ColumnIndex, 
e.RowIndex, true); 

esta manera puede utilizar:

cellRect.X - for X position, cellRect.Y - for Y position, 
cellRect.Width - for column width and cellRect.Height - for column height 
Cuestiones relacionadas