C# 更改所选动态添加文本框的颜色

C# 更改所选动态添加文本框的颜色,c#,winforms,C#,Winforms,当我在文本框中单击鼠标按钮时,我试图设置单个文本框的背景色。我有一个框数组,总共81个,我正在动态地添加到表单中。我使用var num将它们命名为1-81。 我已经能够让它工作,但它增加了颜色的所有框,而不仅仅是我选择的一个 //array of boxes TextBox[,] cell = new TextBox[9, 9]; //add boxes to form for (int row = 0; row < 9; row++) { for (int col = 0; col

当我在文本框中单击鼠标按钮时,我试图设置单个文本框的背景色。我有一个框数组,总共81个,我正在动态地添加到表单中。我使用var num将它们命名为1-81。 我已经能够让它工作,但它增加了颜色的所有框,而不仅仅是我选择的一个

//array of boxes
TextBox[,] cell = new TextBox[9, 9];

//add boxes to form
for (int row = 0; row < 9; row++)
{
  for (int col = 0; col < 9; col++)
  {
   num += 1;
   cell[row, col] = new TextBox();
   cell[row, col].Name = Convert.ToString(num);
  }
}

//handler
cell[row, col].MouseDown += new MouseEventHandler(cellMouseDown);


public void cellMouseDown(object sender, EventArgs e)
{

  for (int row = 0; row < 9; row++)
  {
    for (int col = 0; col < 9; col++)
    {
       //code to add background color to textbox when selected
    }

  }
}
//框数组
TextBox[,]单元格=新的TextBox[9,9];
//将框添加到表单
对于(int行=0;行<9;行++)
{
for(int col=0;col<9;col++)
{
num+=1;
单元格[行,列]=新文本框();
单元格[行,列].Name=Convert.ToString(num);
}
}
//处理者
单元格[行,列].MouseDown+=新的MouseEventHandler(cellMouseDown);
public void cellMouseDown(对象发送方,事件参数e)
{
对于(int行=0;行<9;行++)
{
for(int col=0;col<9;col++)
{
//选择时向文本框添加背景色的代码
}
}
}

尽管您还有其他问题,但问题就这么简单

在创建它们时

for (int row = 0; row < 9; row++)
{
  for (int col = 0; col < 9; col++)
  {
   num += 1;
   cell[row, col] = new TextBox();
   cell[row, col].Name = Convert.ToString(num);
   cell[row, col].MouseDown += new MouseEventHandler(cellMouseDown);
  }
}
其他资源


尽管你还有其他问题,但就这么简单

在创建它们时

for (int row = 0; row < 9; row++)
{
  for (int col = 0; col < 9; col++)
  {
   num += 1;
   cell[row, col] = new TextBox();
   cell[row, col].Name = Convert.ToString(num);
   cell[row, col].MouseDown += new MouseEventHandler(cellMouseDown);
  }
}
其他资源


为什么需要循环

public void cellMouseDown(object sender, EventArgs e)
{

   var txt = sender as TextBox;
   txt.BackgroundColor = /*to whatever color you want*/
}
您还需要在循环内订阅处理程序:

for (int row = 0; row < 9; row++)
{
  for (int col = 0; col < 9; col++)
  {
   num += 1;
   cell[row, col] = new TextBox();
   cell[row, col].Name = Convert.ToString(num);
   cell[row, col].MouseDown += new MouseEventHandler(cellMouseDown);
  }
}
for(int行=0;行<9;行++)
{
for(int col=0;col<9;col++)
{
num+=1;
单元格[行,列]=新文本框();
单元格[行,列].Name=Convert.ToString(num);
单元格[行,列].MouseDown+=新的MouseEventHandler(cellMouseDown);
}
}

为什么需要循环

public void cellMouseDown(object sender, EventArgs e)
{

   var txt = sender as TextBox;
   txt.BackgroundColor = /*to whatever color you want*/
}
您还需要在循环内订阅处理程序:

for (int row = 0; row < 9; row++)
{
  for (int col = 0; col < 9; col++)
  {
   num += 1;
   cell[row, col] = new TextBox();
   cell[row, col].Name = Convert.ToString(num);
   cell[row, col].MouseDown += new MouseEventHandler(cellMouseDown);
  }
}
for(int行=0;行<9;行++)
{
for(int col=0;col<9;col++)
{
num+=1;
单元格[行,列]=新文本框();
单元格[行,列].Name=Convert.ToString(num);
单元格[行,列].MouseDown+=新的MouseEventHandler(cellMouseDown);
}
}

听起来像是一个数独游戏。用网格代替。听起来像是数独游戏。改用网格。