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;