C# 使用带有PictureBox的foreach循环

C# 使用带有PictureBox的foreach循环,c#,image,winforms,foreach,picturebox,C#,Image,Winforms,Foreach,Picturebox,我正试图使我的代码尽可能短,我打算在一定的时间间隔内从3个不同的图片框中选择6个图片进行随机图像。我尝试在一个foreach循环中进行更改,而不是为每个picturebox复制和粘贴开关和case三次。我对C#和windows窗体非常陌生,因此非常感谢您的帮助。 编辑:很抱歉措辞不当,但问题是程序说element不是有效的picturebox,我想知道为什么以及如何修复它(如果可能),但感谢您提供的替代解决方案。 private void timer1_Tick(object sender, E

我正试图使我的代码尽可能短,我打算在一定的时间间隔内从3个不同的图片框中选择6个图片进行随机图像。我尝试在一个foreach循环中进行更改,而不是为每个picturebox复制和粘贴开关和case三次。我对C#和windows窗体非常陌生,因此非常感谢您的帮助。 编辑:很抱歉措辞不当,但问题是程序说element不是有效的picturebox,我想知道为什么以及如何修复它(如果可能),但感谢您提供的替代解决方案。

private void timer1_Tick(object sender, EventArgs e)
    {

        Random random = new Random();
        int picture = random.Next(1, 7);
        var pictures = new List<PictureBox> { pictureBox1, pictureBox2, pictureBox2 };
        foreach (PictureBox element in pictures)
        {
            switch (picture)
            {
                case 1:
                    this.element.Image = Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg");
                    break;
                case 2:
                    this.element.Image = Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg");
                    break;
                case 3:
                    this.element.Image = Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\lemon.jpg");
                    break;
                case 4:
                    this.element.Image = Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\orange.jpg");
                    break;
                case 5:
                    this.element.Image = Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\star.jpg");
                    break;
                case 6:
                    this.element.Image = Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\skull.jpg");
                    break;
            }
        }
private void timer1\u勾选(对象发送方,事件参数e)
{
随机=新随机();
int picture=random.Next(1,7);
var pictures=新列表{pictureBox1,pictureBox2,pictureBox2};
foreach(图片中的PictureBox元素)
{
开关(图片)
{
案例1:
this.element.Image=Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg”);
打破
案例2:
this.element.Image=Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg”);
打破
案例3:
this.element.Image=Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\lemon.jpg”);
打破
案例4:
this.element.Image=Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\orange.jpg”);
打破
案例5:
this.element.Image=Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\star.jpg”);
打破
案例6:
this.element.Image=Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\skull.jpg”);
打破
}
}
像这样使用一个:

Dictionary<int, Image> dictionary = new Dictionary<int, Image>()
{
    {1,  Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg")},
    {2,  Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg")},
};

dictionary.TryGetValue(picture, out value);
if (value != null)
{
    this.element.Image = value;
}
Dictionary Dictionary=newdictionary()
{
{1,Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg”),
{2,Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg”)},
};
TryGetValue(图片,输出值);
if(值!=null)
{
this.element.Image=值;
}
像这样使用一个:

Dictionary<int, Image> dictionary = new Dictionary<int, Image>()
{
    {1,  Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg")},
    {2,  Image.FromFile("C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg")},
};

dictionary.TryGetValue(picture, out value);
if (value != null)
{
    this.element.Image = value;
}
Dictionary Dictionary=newdictionary()
{
{1,Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg”),
{2,Image.FromFile(“C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg”)},
};
TryGetValue(图片,输出值);
if(值!=null)
{
this.element.Image=值;
}
所以你有了图片:

static Image[] s_Images = new string[] {
     "cherry.jpg",
     "bell.jpg",
     "lemon.jpg", 
     "orange.jpg",
     "star.jpg", 
     "skull.jpg"}
  .Select(file => Path.Combine(@"C:\Users\seanb\OneDrive\Pictures", file))
  .Select(file => Image.FromFile(file)) 
  .ToArray();  

static Random random = new Random();
您希望将这些图像随机分配到图片框:

private void timer1_Tick(object sender, EventArgs e) {
  foreach (PictureBox box in new PictureBox[] { pictureBox1, pictureBox2, pictureBox2 }) {
    box.Image = s_Images[random.Next(s_Images.Length)];
  }
}
所以你有照片:

static Image[] s_Images = new string[] {
     "cherry.jpg",
     "bell.jpg",
     "lemon.jpg", 
     "orange.jpg",
     "star.jpg", 
     "skull.jpg"}
  .Select(file => Path.Combine(@"C:\Users\seanb\OneDrive\Pictures", file))
  .Select(file => Image.FromFile(file)) 
  .ToArray();  

static Random random = new Random();
您希望将这些图像随机分配到图片框:

private void timer1_Tick(object sender, EventArgs e) {
  foreach (PictureBox box in new PictureBox[] { pictureBox1, pictureBox2, pictureBox2 }) {
    box.Image = s_Images[random.Next(s_Images.Length)];
  }
}
Random Random=new Random();
int picture=random.Next(1,7);
var pictureBoxs=新列表{pictureBox1,pictureBox2,pictureBox2};
string basePath=“C:\\Users\\seanb\\OneDrive\\Pictures\\”;
string[]pictures=newstring[]{“cherry.jpg”、“bell.jpg”、“lemon.jpg”、“orange.jpg”、“star.jpg”、“skull.jpg”};
foreach(pictureBoxs中的PictureBox元素)
{
this.element.Image=Image.FromFile(basePath+pictures[picture]);
}
Random Random=new Random();
int picture=random.Next(1,7);
var pictureBoxs=新列表{pictureBox1,pictureBox2,pictureBox2};
string basePath=“C:\\Users\\seanb\\OneDrive\\Pictures\\”;
string[]pictures=newstring[]{“cherry.jpg”、“bell.jpg”、“lemon.jpg”、“orange.jpg”、“star.jpg”、“skull.jpg”};
foreach(pictureBoxs中的PictureBox元素)
{
this.element.Image=Image.FromFile(basePath+pictures[picture]);
}

使用
字典

int picture = new Random().Next(1, 7);
Dictionary<int, string> dictionary = new Dictionary<int, string>()
{
    {1, "cherry.jpg"},
    {2, "bell.jpg"},
    {3, "lemon.jpg"},
    {4, "orange.jpg"},
    {5, "star.jpg"},
    {6, "skull.jpg"}
};
string res = "default.jpg";
var pictures = new List<PictureBox> { pictureBox1, pictureBox2, pictureBox2 };
string path = System.IO.Path.Combine("C:\\Users\\seanb\\OneDrive\\Pictures\\" + dictionary.TryGetValue(picture, out res));
pictures.ForEach(x => x.Image = Image.FromFile(path));
int picture=new Random()。下一步(1,7);
字典=新字典()
{
{1,“cherry.jpg”},
{2,“bell.jpg”},
{3,“lemon.jpg”},
{4,“orange.jpg”},
{5,“star.jpg”},
{6,“skull.jpg”}
};
string res=“default.jpg”;
var pictures=新列表{pictureBox1,pictureBox2,pictureBox2};
string path=System.IO.path.Combine(“C:\\Users\\seanb\\OneDrive\\Pictures\\”+dictionary.TryGetValue(picture,out res));
pictures.ForEach(x=>x.Image=Image.FromFile(路径));

使用
字典

int picture = new Random().Next(1, 7);
Dictionary<int, string> dictionary = new Dictionary<int, string>()
{
    {1, "cherry.jpg"},
    {2, "bell.jpg"},
    {3, "lemon.jpg"},
    {4, "orange.jpg"},
    {5, "star.jpg"},
    {6, "skull.jpg"}
};
string res = "default.jpg";
var pictures = new List<PictureBox> { pictureBox1, pictureBox2, pictureBox2 };
string path = System.IO.Path.Combine("C:\\Users\\seanb\\OneDrive\\Pictures\\" + dictionary.TryGetValue(picture, out res));
pictures.ForEach(x => x.Image = Image.FromFile(path));
int picture=new Random()。下一步(1,7);
字典=新字典()
{
{1,“cherry.jpg”},
{2,“bell.jpg”},
{3,“lemon.jpg”},
{4,“orange.jpg”},
{5,“star.jpg”},
{6,“skull.jpg”}
};
string res=“default.jpg”;
var pictures=新列表{pictureBox1,pictureBox2,pictureBox2};
string path=System.IO.path.Combine(“C:\\Users\\seanb\\OneDrive\\Pictures\\”+dictionary.TryGetValue(picture,out res));
pictures.ForEach(x=>x.Image=Image.FromFile(路径));
私有无效计时器1\u勾选(对象发送方,事件参数e)
{
随机=新随机();
List picpath=新列表();
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg”);
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\bell.jpg”);
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\lemon.jpg”);
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\orange.jpg”);
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\star.jpg”);
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\skull.jpg”);
pictureBox1.Image=Image.FromFile(picpath[random.Next(picpath.Count)]);
pictureBox2.Image=Image.FromFile(picpath[random.Next(picpath.Count)]);
pictureBox3.Image=Image.FromFile(picpath[random.Next(picpath.Count)]);
}
私有无效计时器1\u勾选(对象发送方,事件参数e)
{
随机=新随机();
List picpath=新列表();
添加(“C:\\Users\\seanb\\OneDrive\\Pictures\\cherry.jpg”);
picpath.Add(“C:\\Users\\seanb\\OneDrive\\Pictures\\bel