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

C# 如何在DataGridView中获取当前单元格位置x和y?,c#,.net,datagridview,C#,.net,Datagridview,我有一个Windows窗体,其中有一个隐藏的日历。我想在DataGridView的当前单元格下显示表单。位置根据当前单元格的位置而变化 我不想要当前单元格或当前列,我想要的是位置,这样我就可以设置日期表单的位置 以下是我正在使用但不起作用的内容: int po_X = paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Left+paygrid.Left; int po_Y = paygrid.GetCellDisp

我有一个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()方法

你可以试试

[DllImport("user32.dll", EntryPoint = "GetCursorPos")]
private static extern bool GetCursorPos(out Point lpPoint);
并将方法调用为

Point pt;
GetCursorPos(out pt);

pt将提供x和y。您可以尝试以下方法:

Lookup_Account.Left = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Left
Lookup_Account.Top = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Top
因此,您可以使用:

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

谢谢,但是我不想改变光标的位置,我想知道当前单元格在datagridview中的位置。你已经从watbywbarifWelcome得到了我的答案!请对您的代码添加一个简短的解释。它为什么以及如何工作?
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