Pictureboxes填充循环

时间:2015-12-09 20:53:55

标签: c# loops for-loop picturebox fill

面板在我的面板上有90个图片框作为矩阵。这些可能是出勤名单,或者你可以认为这些是巴士座位,公共汽车有90个座位。 我有3个png类型的图像,对于可用座位是“green.png”。“red.png”表示不可用的座位。“blank.png”如果公共汽车有40个座位50个图片框将是“blank.png”。我的问题是那个,我的问题是,我如何能够自动填充它们,只提供公交车的功能和可用的数量。

1

for (int i = 8; i <= 97; i++)
{
    var p = Controls.OfType<PictureBox>()
                    .FirstOrDefault(pb => (int)pb.Tag == i);

    p.Image= Image.FromFile("img/blank.png"); ;
}

2

for (int i = 8; i <= 97; i++)
{
     var p = Controls.OfType<PictureBox>()
            .FirstOrDefault(pb => Int32.Parse(pb.Name.Replace("pictureBox", "")) == i);

     p.Image= Image.FromFile("img/blank.png"); 
}

3

int start = 8,finish = 97;
foreach (Panel panel in Controls.OfType<Panel>())
{
    foreach (var pictureBox in Controls.OfType<PictureBox>())
    {
        if (start != finish){
        pictureBox.Image = Image.FromFile("img/blank.png");
        start++;}
    }
}

第三个代码是我自己的代码,对我来说更清楚,如果它可能是正确的,对我来说更好,对于大多数读者也是如此,我想,谢谢大家...... 更清楚的是,只是逻辑上读这个错误我也知道,但你可以从中理解逻辑:

for (i = 8; i <= 50; i++)
    pictureBox{ i}.Image = Image.FromFile("img/green.png");
for (int i = 50; i <= 70; i++)
    pictureBox{ i}.Image = Image.FromFile("img/red.png");
for (int i = 70;i <=90; i++)
    pictureBox{ i}.Image = Image.FromFile("img/blank.png");

我解决了问题:

//x=max size
int start = 0, avaliable = y, unavailable = x - y;
  foreach (Panel panel in Controls.OfType<Panel>())
  {
     foreach (var p in panel.Controls.OfType<PictureBox>())
     {
       if (start <= unavailable)
       {
         p.Image = Image.FromFile("img/green.png");
         start++;
       }
     }
     start = 1;
     foreach (var p in panel.Controls.OfType<PictureBox>())
     {
       if (start <= avaliable)
       {
         p.Image = Image.FromFile("img/red.png");
         start++;
       }
     }
  }

0 个答案:

没有答案