Определить местоположение ячеек в DataGridView

Учитывая конкретный номер строки и индекс столбца, как я могу вычислить местоположение ячейки (IE: Location.Point) внутри DataGridView?

Причина, по которой мне нужно местоположение ячейки, - это то, что я могу поместить кнопку внутри ячейки, чтобы разрешить просмотр папки (datagridview показывает пути к папкам).

Альтернативные предложения о том, как выполнить этот прием.

Ответы

Ответ 1

Вы не можете найти точку для ячейки DGV, потому что ячейки занимают прямоугольную область в DGV. Однако вы можете найти эту область, используя метод DataGridView.GetCellDisplayRectangle(). Он возвращает Rectangle для области отображения ячейки DGV, заданной столбцами ячейки и индексами строк. Если вам действительно нужна точка, вы можете легко использовать Rectangle для построения точек для любого из Rectangle четырех углов.

// 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: