c# - 使用带有图片框的 foreach 循环
问题描述
我正在尝试使我的代码尽可能短,并且我打算以一定的间隔从 6 张图片中为 3 个不同的图片框选择随机图像。我没有为每个图片框复制和粘贴开关和大小写三次,而是尝试在一个 foreach 循环中进行更改。我对 C# 和 windows 窗体非常陌生,因此不胜感激。编辑:抱歉措辞不佳,但问题是程序说元素不是有效的图片框,我想知道为什么以及如果可能的话如何修复它,但感谢替代解决方案。
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;
}
}
解决方案
使用这样的字典怎么样:
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;
}
推荐阅读
- javascript - javascript 神经网络反向传播算法失败
- c# - 是否可以从视频流中抓取一帧并使用 ffmpeg 将其保存为另一个流中的 png?
- android - Android:确定通知的音频何时停止播放
- android - android-NullPointerException:尝试调用虚拟方法 p()
- javascript - 如果矩形中没有任何内容,我如何让 if 类什么都不做?
- java - 在数组中的每一列中查找最小值和最大值
- numpy - 如何处理 keras 中非常慢的训练?
- javascript - promise.all 不拒绝失败的获取请求
- java - 如何将具有不同空格数量的字符串分成两部分?
- vb.net - 在比较数字之前检查数字是否为整数在 vb net 中不起作用