特定の行番号と列インデックスが与えられた場合、DataGridView内のセルの場所(つまり、Location.Point)を計算するにはどうすればよいですか?
セルの場所が必要な理由は、セル内にボタンを配置してフォルダーの参照を可能にするためです(datagridviewにはフォルダーパスが表示されます)。
この歓迎を達成する方法についての代替案。
セルはDGVの長方形の領域を占めるため、DGVセルのポイントを実際に見つけることはできません。ただし、この領域は DataGridView.GetCellDisplayRectangle()メソッド を使用して見つけることができます。セルの列と行のインデックスで指定されたDGVセルの表示領域にRectangle
を返します。本当にポイントが必要な場合は、Rectangle
を使用して、Rectangle
の4つのコーナーのいずれかのポイントを簡単に作成できます。
// Get Rectangle for second column in second row.
var cellRectangle = dataGridView1.GetCellDisplayRectangle(1, 1, true);
// Can create Points using the Rectangle if you want.
Console.WriteLine("Top Left x:{0}\t y:{1}", cellRectangle.Left, cellRectangle.Top);
Console.WriteLine("Bottom Right x:{0}\t y:{1}", cellRectangle.Right, cellRectangle.Bottom);
しかし、私はあなたの質問のコメントに同意します。カスタムDataGridViewColumnを作成し、そこでTextBoxとButtonをホストすることをお勧めします。 ここに例があります DateTimePickerコントロールに対してこれを行うこと: