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

时间:2013-07-27 12:41:48

标签: c# winforms state picturebox

这是我的问题:
我用c#制作预订影院系统,窗口形式
假设我有5列5行图片框,在表格加载中获取它们的值,可以从数据库中获取或不存在。
然后用户点击他想要的座位(并且图片框的图像改变)并按下提交按钮 如何检查每个图片框的图像(以确定他是否想要这个座位)? 我可以做这样的事情

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;     
}

1 个答案:

答案 0 :(得分:0)

将每个PictureBox存储在一个列表中并迭代它们。此外,当用户选择/取消选择座位时,请更改PictureBox的Tag属性,此时您正在尝试将字符串与Image进行比较(picturebox11.Image返回{ {1}}对象)。

Image

或者,您可以使用methods suggested here获取表单中的所有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
    }
}