提交时一起检查每个图片框的状态

本文关键字:状态 一起 检查 提交 | 更新日期: 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;     
}