C#中能否用PictureBox来定义数组

时间:2022-08-30 19:51:46
在窗体上已经有了pictureBox1~pictureBox15.
我想用数组管理这些pictureBox的图片显示。
就很简单的想,
PictureBox[] pic = new PictureBox[15]{ pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, pictureBox7, pictureBox8, pictureBox9, pictureBox10, pictureBox11, pictureBox12, pictureBox13, pictureBox14,pictureBox15};
然后再后面想直接用pic[i]来调用。

出错了,额,我刚刚接触C#,求助于各位大虾。
能否告诉小弟该如何实现我想要的用 数组 来完成对pictureBox控件的调用。

14 个解决方案

#1


            PictureBox[] pb = new PictureBox[4];
            pb[0] = pictureBox1;
            pb[1] = pictureBox2;
            pb[2] = pictureBox3;
            pb[3] = pictureBox4;
应该可以的吧

#2


PictureBox[] pic = new PictureBox[15];
for (int i = 0; i < pic.Length; i++)
{
pic[i] = new PictureBox();
pic[i].Name = "PictureBox" + Convert.ToString(i + 1);
pic[i].Location = ...;
}

#3


怎么用了这么多Picturebox?

#4


2#已经解答了~

#5


引用 2 楼 snowdust 的回复:
C# code
PictureBox[] pic = new PictureBox[15];
for (int i = 0; i < pic.Length; i++)
{
    pic[i] = new PictureBox();
    pic[i].Name = "PictureBox" + Convert.ToString(i + 1);
    pic[i].Location……

2#,你的回复的确给我启发。但是我在调试过程中,发现这个并不能帮我摆脱困境。
举个例子来说,pic[3].Image属性变了,而pictureBox3的属性没有任何变化。
所以感觉pic[3]和控件上的pictureBox3并不是同一个。
感谢你的指教

#6


你想每一个都由你控制,你必须创建时就用到数组

#7


何必搞数组。
难道容器控件的controls不是数组?

#8


用ImageList控件,把你的15张图片放在这个里面!
//imageList1.Images[0]这个就是取出ImageList控件里面的第一张图片,在窗体里面任意调用
pictureBox1.Image = imageList1.Images[0];  

#9


完全可以,按7楼的做。

#10


引用 8 楼 hongqun369 的回复:
用ImageList控件,把你的15张图片放在这个里面!
//imageList1.Images[0]这个就是取出ImageList控件里面的第一张图片,在窗体里面任意调用
pictureBox1.Image = imageList1.Images[0];


补充添加图片方法:
例:
ImageList1.Images.Add(Image.FromFile("c:\\windows\\FeatherTexture.bmp"));

#11


纠正一下,上面说到的是不太确切,动态数组控件动态赋值可以参考一下
http://bbs.firnow.com/dview16t24008.html

#12


呵呵~问题解决了,是同学给了我莫大启示。
public void SZPi()//数组picturebox
        {
                pic.Add(null);
                pic.Add(null);
                pic.Add(pictureBox3);
                pic.Add(pictureBox4);
                pic.Add(pictureBox5);
                pic.Add(pictureBox6);
                pic.Add(pictureBox7);
                pic.Add(null);
                pic.Add(null);
                pic.Add(pictureBox10);
                pic.Add(pictureBox11);
                pic.Add(pictureBox12);
                pic.Add(pictureBox13);
                pic.Add(pictureBox14);
                PictureBox [] values = (PictureBox[])pic.ToArray(typeof(PictureBox));
 }
后面就是pictureBox.Image=..........

真是不好意思,这么简单的问题还提出来。
个人而言,收获有些。知道了动态数组的实现。
感谢2#,只是我觉得那个内存上分配得地址是不一样,呵呵~果然没有实现。
谢谢在这里留言的各位。

#13


引用 8 楼 hongqun369 的回复:
用ImageList控件,把你的15张图片放在这个里面!
//imageList1.Images[0]这个就是取出ImageList控件里面的第一张图片,在窗体里面任意调用
pictureBox1.Image = imageList1.Images[0];

8#,你这个应该是对图片做一个管理的吧,呵呵~只是我要的并不是这样子。而是用数组调用pictureBox控件,不单单是它的图片属性,还有其他。比如说pic[i].Show();   
我接触C#时日不多,谢谢指教了

#14


PictureBox[] pb = new PictureBox[4];
  pb[0] = pictureBox1;
  pb[1] = pictureBox2;
  pb[2] = pictureBox3;
  pb[3] = pictureBox4;
应该可以的吧

就是阿 

#1


            PictureBox[] pb = new PictureBox[4];
            pb[0] = pictureBox1;
            pb[1] = pictureBox2;
            pb[2] = pictureBox3;
            pb[3] = pictureBox4;
应该可以的吧

#2


PictureBox[] pic = new PictureBox[15];
for (int i = 0; i < pic.Length; i++)
{
pic[i] = new PictureBox();
pic[i].Name = "PictureBox" + Convert.ToString(i + 1);
pic[i].Location = ...;
}

#3


怎么用了这么多Picturebox?

#4


2#已经解答了~

#5


引用 2 楼 snowdust 的回复:
C# code
PictureBox[] pic = new PictureBox[15];
for (int i = 0; i < pic.Length; i++)
{
    pic[i] = new PictureBox();
    pic[i].Name = "PictureBox" + Convert.ToString(i + 1);
    pic[i].Location……

2#,你的回复的确给我启发。但是我在调试过程中,发现这个并不能帮我摆脱困境。
举个例子来说,pic[3].Image属性变了,而pictureBox3的属性没有任何变化。
所以感觉pic[3]和控件上的pictureBox3并不是同一个。
感谢你的指教

#6


你想每一个都由你控制,你必须创建时就用到数组

#7


何必搞数组。
难道容器控件的controls不是数组?

#8


用ImageList控件,把你的15张图片放在这个里面!
//imageList1.Images[0]这个就是取出ImageList控件里面的第一张图片,在窗体里面任意调用
pictureBox1.Image = imageList1.Images[0];  

#9


完全可以,按7楼的做。

#10


引用 8 楼 hongqun369 的回复:
用ImageList控件,把你的15张图片放在这个里面!
//imageList1.Images[0]这个就是取出ImageList控件里面的第一张图片,在窗体里面任意调用
pictureBox1.Image = imageList1.Images[0];


补充添加图片方法:
例:
ImageList1.Images.Add(Image.FromFile("c:\\windows\\FeatherTexture.bmp"));

#11


纠正一下,上面说到的是不太确切,动态数组控件动态赋值可以参考一下
http://bbs.firnow.com/dview16t24008.html

#12


呵呵~问题解决了,是同学给了我莫大启示。
public void SZPi()//数组picturebox
        {
                pic.Add(null);
                pic.Add(null);
                pic.Add(pictureBox3);
                pic.Add(pictureBox4);
                pic.Add(pictureBox5);
                pic.Add(pictureBox6);
                pic.Add(pictureBox7);
                pic.Add(null);
                pic.Add(null);
                pic.Add(pictureBox10);
                pic.Add(pictureBox11);
                pic.Add(pictureBox12);
                pic.Add(pictureBox13);
                pic.Add(pictureBox14);
                PictureBox [] values = (PictureBox[])pic.ToArray(typeof(PictureBox));
 }
后面就是pictureBox.Image=..........

真是不好意思,这么简单的问题还提出来。
个人而言,收获有些。知道了动态数组的实现。
感谢2#,只是我觉得那个内存上分配得地址是不一样,呵呵~果然没有实现。
谢谢在这里留言的各位。

#13


引用 8 楼 hongqun369 的回复:
用ImageList控件,把你的15张图片放在这个里面!
//imageList1.Images[0]这个就是取出ImageList控件里面的第一张图片,在窗体里面任意调用
pictureBox1.Image = imageList1.Images[0];

8#,你这个应该是对图片做一个管理的吧,呵呵~只是我要的并不是这样子。而是用数组调用pictureBox控件,不单单是它的图片属性,还有其他。比如说pic[i].Show();   
我接触C#时日不多,谢谢指教了

#14


PictureBox[] pb = new PictureBox[4];
  pb[0] = pictureBox1;
  pb[1] = pictureBox2;
  pb[2] = pictureBox3;
  pb[3] = pictureBox4;
应该可以的吧

就是阿