TableLayoutPanel l oop (C# формы) - PullRequest
0 голосов
/ 06 мая 2020

У меня есть сетка 3x3 с метками в каждой ячейке и текстом «X» в каждой. Когда я нажимаю на одну из этих меток, я хочу, чтобы одна и другая рядом с ней изменили текст на «O», используя foreach l oop элементов управления (строк и столбцов). Есть ли у кого-нибудь представление о том, как это должно выглядеть?

1 Ответ

0 голосов
/ 06 мая 2020

Это, конечно, не полное решение, но, возможно, оно даст вам представление о том, с чего начать.

Чтобы создать метки, вы наверняка захотите сделать это программно:

  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"; 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...