0
我想動態地定位頁面上的控件,當寬度小於控件的總寬度時,我已經將控件「包裝」到下一行。 現在我遇到的問題是正確的間距。動態控制定位
我目前有以下;
public void AddControl(Control controlToAdd, int parentWidth, int allRowsHeight)
{
RowControls.Add(controlToAdd);
int seperationWidth = (parentWidth - RowControls.Sum(c => c.Width))/(RowControls.Count + 1);
int count = 0;
foreach (Control c in RowControls)
{
int xLocation = (seperationWidth*(count+1));
for (int i = 0; i < count; i++)
{
xLocation += (RowControls[i].Width);
}
c.Location = new Point(xLocation, allRowsHeight);
count++;
}
}
這幾乎的作品,但你可以從截圖中看到,該控件會有點過頭了,我不太清楚這是爲什麼?
「包裝」檢查基本上是seperationWidth
線的重複,它確保最小間距爲1,即如果間距小於1,則它會「換行」。
也許有完全不同的更好的方法來做到這一點?如果有人熟悉DevExpress,我也可以訪問DevExpress。
編輯:
懷疑我的方法有一個四捨五入的問題。不知道我怎樣才能解決它;
在這種情況下,seperationWidth
是7並且控制寬度是128.
7 + 128 + 7 + 128 + 7 + 128 + 7 + 128 + 7 = 547。 不知道我怎麼能解決這個問題呢?
是否有一個特別的原因,你不只是使用FlowLayoutPanel? – jmcilhinney
當我以編程方式添加它們時,它會自動佈局控件嗎? – Trent
爲什麼我會提到它,如果沒有。閱讀該類的MSDN文檔,這應該是您指向新類型或成員時首先執行的操作。 – jmcilhinney