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