0

我想在这个列表中添加我的按钮

List<List<Button>> buttonss = new List<List<Button>>();

这就是我创建按钮的方式:

Button[][] buttons;

在方法中(也尝试填充列表但不正确):

for (int r = 0; r < row; r++)
    {
       for ( int c = 0; c < col; c++)
           {
             buttons[r][c] = new Button();
             buttonss.Add(buttons[r][c]);
           }
    }

我如何使用此按钮数组填充此列表(我的数组必须是Button[][]而不是Button[,]因为当我执行 xml 序列化等其他事情时它会让我的生活更轻松

4

2 回答 2

1

我不确定你为什么要尝试以两种不同的方式存储这两种方式,但如果你真的需要,那么你需要初始化每个内部数组和列表:

buttons = new Button[row][];
for (int r = 0; r < row; r++)
{ 
   buttons[r] = new Button[col];
   List<Button> rowList = new List<Button>();
   buttonss.Add(rowList);    
   for (int c = 0; c < col; c++)
   {
     buttons[r][c] = new Button();
     rowList.Add(buttons[r][c]);
   }
}

另一种方法是存储在锯齿状数组中并转换为列表(反之亦然):

// From List<List> to Jagged Array
buttons = buttonss.Select(b=>b.ToArray()).ToArray();

// From Jagged Array to List<List>
buttonss = buttons.Select(b=>b.ToList()).ToList();
于 2013-03-26T15:48:20.167 回答
1

您可以使用 LINQ Select

buttonss = buttons.Select(b => b.ToList()).ToList();
于 2013-03-26T15:49:10.240 回答