Вы можете использовать свойство Tag в ваших Panel
объектах для хранения некоторой информации.
PanelArray[r, c] = new Panel
{
Size = new Size(50, 50),
Location = new Point(PanelContainer.Width / 5 * c, PanelContainer.Height / 5 * r),
BackColor = Color.Red,
BorderStyle = BorderStyle.Fixed3D,
Tag = (Row: r, Column: c)
};
В вашем методе PanelArray_Click
вы можете получить индексы:
var indexes = ((int Row, int Column))P.Tag;
var row = indexes.Row;
var column = indexes.Column;
// Todo: your logic here
В свойстве Tag
вы можете хранить любой объект, поэтому при необходимости вы можете создать некоторый класс для хранения данных.
Другое решение - два для циклов, чтобы получить индексы, такие как:
private (int Row, int Column) GetIndexes(Panel panel)
{
for (int x = 0; x < PanelArray.GetLength(0); x++)
{
for (int y = 0; y < PanelArray.GetLength(1); y++)
{
if (PanelArray[x, y] == panel)
{
return (x, y);
}
}
}
throw new Exception("Not found.");
}
А затем вы можете использовать в своем методе PanelArray_Click
:
var indexes = this.GetIndexes(P);
var row = indexes.Row;
var column = indexes.Column;
// Todo: your logic here