C# 动态创建PictureBox的网格

C# 动态创建PictureBox的网格,c#,winforms,picturebox,C#,Winforms,Picturebox,我在数组中有一组包含字符的数组,例如 {{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}br> 我希望能够根据数量的变化动态创建网格(每个内部数组中的字符数量始终相同) 所以我希望内部数组是行,每个数组中的字符都在各自的列中,这样看起来就像 “#.#” “#$#” “#@#” “###” 因此,设置这个网格的最佳方法是什么,然后我想做的是,根据它是什么符号,用PictureBox填充所有这些单元格,这将是一个特定的图片。 因此,如果您想知道最好的方

我在数组中有一组包含字符的数组,例如
{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}br> 我希望能够根据数量的变化动态创建网格(每个内部数组中的字符数量始终相同) 所以我希望内部数组是行,每个数组中的字符都在各自的列中,这样看起来就像

“#.#”
“#$#”
“#@#”
“###”

因此,设置这个网格的最佳方法是什么,然后我想做的是,根据它是什么符号,用PictureBox填充所有这些单元格,这将是一个特定的图片。


因此,如果您想知道最好的方法是什么,请提供任何帮助/建议。使用
DataGridView
是最简单的选择。例如:

var images = new Dictionary<char, Image>()
{
    {'#', Properties.Resources.Image1},
    {'.', Properties.Resources.Image2},
    {'$', Properties.Resources.Image3},
    {'@', Properties.Resources.Image4},
};
var data = new List<string>() { "#.#", "#$#", "#@#", "###" };
var list = data.Select(x => new
                       {
                           A = images[x[0]],
                           B = images[x[1]],
                           C = images[x[2]]
                       }).ToList();
this.dataGridView1.DataSource = list;

使用
DataGridView
是最简单的选择。可能的重复效果非常好,感谢我做了一些调整,但非常感谢唯一的问题是它创建了一行带有红色“X”的白色框它在它的底部,所以我认为它在第二到第二行,它创建了1到多行,因此没有任何东西可以放在单元格中,但我会在明天解决它。欢迎。设置this.dataGridView1.allowUserToAddress=false
var images = new Dictionary<char, Image>()
{
    {'#', Properties.Resources.Image1},
    {'.', Properties.Resources.Image2},
    {'$', Properties.Resources.Image3},
    {'@', Properties.Resources.Image4},
};
char[][] data = new char[][]{ 
    new char[] {'#','.','#'},
    new char[] {'#','$','#'},
    new char[] {'#','@','#'},
    new char[] {'#','#','#'},
};
var dt = new DataTable();
for (int i = 0; i < data.Max(x => x.Count()); i++)
    dt.Columns.Add(string.Format("C{0}", i), typeof(Image));
data.ToList().ForEach(a => dt.Rows.Add(a.Select(x=>images[x]).ToArray()));
this.dataGridView1.DataSource = dt;