提交时一起检查每个图片框的状态
本文关键字:状态 一起 检查 提交 | 更新日期: 2023-09-27 18:25:13
这是我的问题:
我正在用c#,windows窗体制作一个预订影院系统
假设我有5列5行的picturebox,它们在表单加载时从数据库中获取值,无论是否可用
然后,用户点击他想要的座位(图片框的图像发生变化),然后按下提交按钮
我如何将每个图片框的图像(以确定他是否想要这个座位)一起检查
我可以做一些类似的事情
if (picturebox11.image=="seatchecked"){seats[]+=11;}
if (picturebox12...
但我想知道是否还有其他更快的方法。(如果有帮助的话,图片框的位置是固定的)
到目前为止,我已经这样做了:
private void button1_Click(object sender, EventArgs e)
{
List<PictureBox> pb = new List<PictureBox>();
pb.Add(seat11);
pb.Add(seat12);
pb.Add(seat13);
pb.Add(seat14);
pb.Add(seat15);
pb.Add(seat21);
pb.Add(seat22);
pb.Add(seat23);
pb.Add(seat24);
pb.Add(seat25);
pb.Add(seat31);
pb.Add(seat32);
pb.Add(seat33);
pb.Add(seat34);
pb.Add(seat35);
for (int i = 0; i < 20; i++) {
pb[i].Click += pictureBox_Click;
}
}
void pictureBox_Click(object sender, EventArgs e)
{
this.pictureBox.Image = ArgyroCinema.Properties.Resources.seatred;
}
将每个PictureBox存储在一个列表中,并对其进行迭代。此外,当用户选择/取消选择座位时,更改PictureBox的Tag
属性,因为此时您正在尝试将字符串与Image
进行比较(picturebox11.Image返回Image
对象)。
List<PictureBox> pb = new List<PictureBox>();
pb.Add(pictureBox1);
pb.Add(pictureBox2);
//etc..
或者,您可以使用此处建议的方法来获取表单中的所有PictureBox
对象,以避免在上面键入它。
然后遍历它们并读取它们的Tag
属性。在这种情况下,我使用了true
来表示他们想要座位,但Tag
是一种对象类型,所以你可以使用你喜欢的任何类型。
foreach(PictureBox p in allPictureBoxes)
{
if((bool)p.Tag == true)
{
//seat wanted
}
else
{
//seat not wanted
}
}
根据评论更新
void pictureBox_Click(object sender, EventArgs e)
{
PictureBox pb = sender as PictureBox;
if(pb != null)
pb.Image = ArgyroCinema.Properties.Resources.seatred;
}