我有一个带有隐藏日历的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);
答案 0 :(得分:16)
您可以使用paygrid.PointToScreen()方法。
form_date.Location = paygrid.PointToScreen(
paygrid.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location);
答案 1 :(得分:2)
你可能想试试这个:
Lookup_Account.Left = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Left
Lookup_Account.Top = datagrid_setting.GetCellDisplayRectangle(colIndex, rowIndex, False).Top
答案 2 :(得分:0)
您可以尝试
[DllImport("user32.dll", EntryPoint = "GetCursorPos")]
private static extern bool GetCursorPos(out Point lpPoint);
并将方法调用为
Point pt;
GetCursorPos(out pt);
pt将提供x和y。
答案 3 :(得分: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