简体   繁体   English

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

[英]How do I to get the current cell position x and y in a DataGridView?

I have a Windows form with a calendar which is hidden. 我有一个带有隐藏日历的Windows表单。 I want to show the form right under the current cell of a DataGridView. 我想在DataGridView的当前单元格下面显示表单。 The position changes according to the position of current cell. 位置根据当前单元格的位置而变化。

I don't want the current cell or current column, I want the position so that I can set the location of my date forms. 我不想要当前的单元格或当前列,我想要的位置,以便我可以设置我的日期表单的位置。

Here is what I am using but its not working: 这是我正在使用但它不工作:

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

You can use paygrid.PointToScreen() method. 您可以使用paygrid.PointToScreen()方法。

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

You may want to try this: 你可能想试试这个:

Lookup_Account.Left = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Left
Lookup_Account.Top = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Top
Rectangle cellRect = paygrid.GetCellDisplayRectangle(e.ColumnIndex, 
e.RowIndex, true);

So You can use: 所以你可以使用:

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

You may try 你可以试试

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

and call method as 并调用方法为

Point pt;
GetCursorPos(out pt);

pt will provide x and y. pt将提供x和y。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM