这是我的问题:
我用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;
}
答案 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
}
}