2012-03-08 14 views
8

Ho un modulo di Windows con un calendario che è nascosto. Voglio mostrare il modulo proprio sotto la cella corrente di un DataGridView. La posizione cambia in base alla posizione della cella corrente.Come posso ottenere la posizione corrente della cella xey in un DataGridView?

Non voglio la cella corrente o la colonna corrente, voglio la posizione in modo che possa impostare la posizione dei miei moduli di data.

Ecco quello che sto usando, ma la sua non funziona:

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); 

risposta

10

È possibile utilizzare il metodo paygrid.PointToScreen().

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

lo ringraziano così much..it ha funzionato perfettamente – user1231584

0

Si può provare il metodo

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

e chiamata come

Point pt; 
GetCursorPos(out pt); 

pt fornirà xe y.

+0

Grazie, ma non voglio ge la posizione del cursore voglio la posizione della cella corrente in datagridview..e hai già ricevuto la mia risposta da watbywbarif – user1231584

1

Si consiglia di provare questo:

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

Benvenuto in StackOverflow! Si prega di aggiungere una breve spiegazione sul codice. Perché e come funziona? – Aurasphere

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

in modo da poter utilizzare:

cellRect.X - for X position, cellRect.Y - for Y position, 
cellRect.Width - for column width and cellRect.Height - for column height 
Problemi correlati