Вы можете использовать GetColumnWidths
и GetRowHeights
методы для расчета ячейки строки и столбца индекса:
Point? GetRowColIndex(TableLayoutPanel tlp, Point point)
{
if (point.X > tlp.Width || point.Y > tlp.Height)
return null;
int w = tlp.Width;
int h = tlp.Height;
int[] widths = tlp.GetColumnWidths();
int i;
for (i = widths.Length - 1; i >= 0 && point.X < w; i--)
w -= widths[i];
int col = i + 1;
int[] heights = tlp.GetRowHeights();
for (i = heights.Length - 1; i >= 0 && point.Y < h; i--)
h -= heights[i];
int row = i + 1;
return new Point(col, row);
}
Использование:
private void tableLayoutPanel1_Click(object sender, EventArgs e)
{
var cellPos = GetRowColIndex(
tableLayoutPanel1,
tableLayoutPanel1.PointToClient(Cursor.Position));
}
Но обратите внимание, что событие щелчка только возникает, если ячейка не уже содержат элемент управления.
Я не могу найти эти методы :( Я использую .netframe work 4.5 –
@AymanSharaf Какие методы? Мой код не компилятор? Каково ваше сообщение об ошибке? –
Я не могу найти GetColumnWidths и GetRowHeights –