2012-03-08 68 views
8

我有隐藏日历的窗体窗体。我想在DataGridView的当前单元格下显示该表单。位置根据当前单元的位置而改变。如何在DataGridView中获取当前单元格的位置x和y?

我不希望当前的单元格或当前列,我想要的位置,以便我可以设置我的日期形式的位置。

这里是我使用的是什么,但它不工作:

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

回答

10

您可以使用paygrid.PointToScreen()方法。

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

谢谢你这么much..it工作完全 – user1231584 2012-03-08 15:25:46

0

您可以尝试

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

和呼叫方法

Point pt; 
GetCursorPos(out pt); 

PT将提供x和y。

+0

谢谢,但我不想戈光标位置我想要datagridview中的当前单元格的位置。并且您已经从watbywbarif获取了我的answear – user1231584 2012-03-08 15:27:52

1

你可以试试这个:

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

欢迎来到StackOverflow!请在您的代码中添加一个简短的解释。为什么以及它如何工作? – Aurasphere 2015-11-13 10:56:26

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

所以你可以使用:

cellRect.X - for X position, cellRect.Y - for Y position, 
cellRect.Width - for column width and cellRect.Height - for column height 
相关问题