我有一些在迭代時添加的圖片框。
Urls 從資料庫表中獲取并回圈,同時添加帶有 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);
}
如果我需要使用柔性面板,請告知。
非常感謝任何幫助:)
注意: 忽略損壞的影像,因為某些頭像實際上已損壞(我們稍后會處理),所以這是可以預料的。
uj5u.com熱心網友回復:
您可以利用 winform 的另一部分,例如表格或網格陣列,但假設您想堅持使用此工具...
看起來該位置的當前 Y 坐標只會垂直堆疊大于 rowLimit 的所有值。您可以考慮利用整數除法來發揮自己的優勢,如下所示:
Location = new Point(i > 0 ? i * (Size.X 2) : 0, i / rowLimit > 0 ? i * (Size.Y 2) : 0)
這里,當i介于 0 和 10 之間時, i / rowLimit將為 0 ,然后當i介于 11 和 21 之間時為 1,依此類推。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516765.html
標籤:C#表格
上一篇:在運行時加載程式集.NET6
