2012-03-08 67 views
8

私は隠されているカレンダー付きのWindowsフォームを持っています。私は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()メソッドを使用することができます:ここで

は、私が使用していますが、そのが動作していないものです。

Point pt; 
GetCursorPos(out pt); 

PTは、xとyを提供しますよう

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

はあなたに感謝のでmuch..itは完全 – user1231584

0

あなたは

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

と呼び出し方法を試してください。

+0

おかげで働いたが、私は、GEにしたいいけませんカーソルの位置私はdatagridviewで現在のセルの位置をしたい..とuはすでにwatbywbarifから私の返答を持って – user1231584

1

あなたがこれを試してみたいことがあります。

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

ようこそStackOverflow!コードに関する簡単な説明を追加してください。なぜ、どのように動作するのですか? – Aurasphere

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 
関連する問題