Это, конечно, не полное решение, но, возможно, оно даст вам представление о том, с чего начать.
Чтобы создать метки, вы наверняка захотите сделать это программно:
for (int col = 0; col < table.ColumnCount; col++)
{
for (int row = 0; row < table.RowCount; row++)
{
Label lbl = new Label();
lbl.Click += Lbl_Click;
table.Controls.Add(lbl, col, row);
}
}
Обратите внимание, что событие щелчка одинаково для каждой метки. В этом событии вы можете получить информацию о нажатой метке:
private void Lbl_Click(object sender, EventArgs e)
{
Label lbl = (Label)sender;
int row = table.GetRow(lbl);
int col = table.GetColumn(lbl);
lbl.Text = "O";
//This is just an example
//This will throw an error if you click the rightmost cell
Label lbl2 = (Label)table.GetControlFromPosition(col+1,row);
lbl2.Text = "O";
}