如何在DataGridView中获取当前单元格位置x和y?

我有一个Windows表单,其中隐藏着日历。 我想在DataGridView的当前单元格下面显示表单。 位置根据当前单元格的位置而变化。

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

这是我正在使用但它不起作用:

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

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

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

你可能想试试这个:

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

你可以试试

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

并调用方法为

 Point pt; GetCursorPos(out pt); 

pt将提供x和y。

 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