我有一些图片框,它们是在迭代时添加的。
从数据库表中提取URL,并在添加具有X/Y坐标的PictureBox控件时循环。
经过反复试验,我找到了如何让它们在水平行中对齐,但当我想在11张图片后断开行并继续下面的操作时,问题出现了(Y:第一个图像高度+5(填充)。
我想出了这个公式:
int rowLimit = 11;
Location = new Point(i > 1 ? 27 * i : 0, i > rowLimit ? i * 27 : 0)
这让我得到了这个
太好了。快到了...直到我试着在下面的下一排工作。
我怎么才能把这11个横过来,不管剩下多少行在下面?
int i = 0;
int rowLimit = 11;
foreach (DataRow row in dt.Rows)
{
i++;
var picture = new PictureBox
{
Name = "pictureBox",
Size = new Size(25, 25),
Location = new Point(i > 1 ? 27 * i : 0, i > rowLimit ? i * 27 : 0),
ImageLocation = "https://example.com/" + row["avatar"].ToString()
};
Controls.Add(picture);
}
如果我需要使用柔性面板,请告知。
任何帮助都非常感谢:)
**注意:**忽略损坏的图像,这是预期的,因为一些头像实际上是损坏的(我们稍后处理)。
1条答案
按热度按时间dfty9e191#
您可以利用winforms的另一部分,如表或网格数组,但假设您想坚持使用此工具...
看起来该位置的当前Y坐标将垂直堆叠大于rowLimit的所有内容。您可以考虑利用整数除法来获得优势,如下所示:
这里,当i在0和10之间时,i / rowLimit将为0,当i在11和21之间时,i / rowLimit将为1,依此类推。