C#创建PictureBox数组的更简单方法(48个盒子)
项目环境:Visual Studio 2013,使用Windows窗体模板 这就是我目前拥有的,我假设有一种更简单的方法来创建这样的数组。我试过很多方法,但我对C#还不够了解C#创建PictureBox数组的更简单方法(48个盒子),c#,arrays,string,picturebox,C#,Arrays,String,Picturebox,项目环境:Visual Studio 2013,使用Windows窗体模板 这就是我目前拥有的,我假设有一种更简单的方法来创建这样的数组。我试过很多方法,但我对C#还不够了解 PictureBox[] boxes = { runeBox1, runeBox2, runeBox3, runeBox4, runeBox5, runeBox6, runeBox7, runeBox8, runeBox9, runeBox10,
PictureBox[] boxes = {
runeBox1, runeBox2, runeBox3, runeBox4, runeBox5, runeBox6, runeBox7, runeBox8,
runeBox9, runeBox10, runeBox11, runeBox12, runeBox13, runeBox14, runeBox15, runeBox16,
runeBox17, runeBox18, runeBox19, runeBox20, runeBox21, runeBox22, runeBox23, runeBox24,
runeBox25, runeBox26, runeBox27, runeBox28, runeBox29, runeBox30, runeBox31, runeBox32,
runeBox33, runeBox34, runeBox35, runeBox36, runeBox37, runeBox38, runeBox39, runeBox40,
runeBox41, runeBox42, runeBox43, runeBox44, runeBox45, runeBox46, runeBox47, runeBox48};
到目前为止,我尝试的是:
string[] strArr = new string[48];
for (int i = 1; i != 48; i++)
{
strArr[i] = "runebox" + i.ToString();
}
int count = 0;
foreach (object p in this.Controls)
{
if (p.GetType() == typeof(PictureBox))
{
if (((PictureBox)p).Name == strArr[count])
{
boxes[count] = ((PictureBox)p);
count++;
}
}
}
这可以编译,但在数组框中会出现null指针异常
我还尝试了一个类型转换器,但也没有得到任何结果
希望你们中的一些聪明人能告诉我去罗马的路。一句话就可以找到所有形式的图片框
private PictureBox[] boxes;
.ctor
{
InitializeComponent();
boxes = this.Controls.OfType<PictureBox>()
.Where(pb => pb.Name.StartsWith("runeBox"))
.OrderBy(pb => int.Parse(pb.Name.Replace("runeBox","")))
.ToArray();
}
private PictureBox[]框;
博士
{
初始化组件();
box=this.Controls.OfType()
.Where(pb=>pb.Name.StartsWith(“runeBox”))
.OrderBy(pb=>int.Parse(pb.Name.Replace(“runeBox”),“”)
.ToArray();
}
如果您只想创建它,然后手动将它们添加到表单中,您可以使用LINQ和可枚举项
您可以这样创建它们:
var pictureboxes = Enumerable.Range(1,48).ToList().Select(i=> new PictureBox(){Name = "runebox" + i.ToString()}).ToList();
然后,要添加到表单中,您只需执行以下操作:
pictureboxes.ForEach(pic=> this.Controls.Add(pic));
48个图片盒?我肯定你做错了。在修复
NullReferenceException
之前,您需要处理~48个图片框。您可以从索引1开始填充strArr,但当您访问表单的控件时,从count=0开始。。。我建议您将for循环更改为(inti=0;I<48;I++)。这将有助于了解您首先为什么要这样做。窗体上似乎已经存在PictureBox控件数组时?那么,为什么不直接访问它们呢?为什么是阵列呢?我已经放置了48个盒子,我用图像填充它们。我需要阵列,以便轻松清除图像,这样程序就可以在不显示旧图像的情况下再次放置新图像。这正是我要寻找的。非常感谢。现在我只需要学会如何自己想出这些东西。耶,学习!