动态创建图片框网格

时间:2016-10-13 06:51:09

标签: c# winforms picturebox

我在数组中有一组包含字符的数组,例如
{{ '#', '', '#'} { '#', '$', '#'} { '#', '@', '#',} { '#', '#', '#'}}
我希望能够根据数量动态创建一个网格,因为金额可以改变(它们在每个内部数组中总是具有相同数量的字符) 所以我希望内部数组是行,每个内部的字符都在它们自己的列上,所以它看起来像

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

那么设置这个网格的最佳方法是什么,然后我想做的是用照片框填充所有这些单元格,具体取决于它将是一个特定的图片。

所以只是想知道最好的方法是做任何帮助/建议非常感谢

1 个答案:

答案 0 :(得分:1)

使用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;

在上面的代码中,我创建了一个字典,用于在字符和图像之间进行映射。然后将输入数据整形为包含图像而不是字符的列表。当您将结果列表设置为DataSource的{​​{1}}时,您将看到这些图片而不是字符。

如果出于任何原因您不想使用匿名对象,您只需创建一个包含任意数量列的动态DataGridView

DataTable