web-dev-qa-db-ja.com

DataGridViewでセルの場所を決定する

特定の行番号と列インデックスが与えられた場合、DataGridView内のセルの場所(つまり、Location.Point)を計算するにはどうすればよいですか?

セルの場所が必要な理由は、セル内にボタンを配置してフォルダーの参照を可能にするためです(datagridviewにはフォルダーパスが表示されます)。

この歓迎を達成する方法についての代替案。

17

セルは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コントロールに対してこれを行うこと:

35
Jay Riggs