我創建了一個非常複雜的Windows窗體應用程序。我現在想要做的是,如果點擊不同的按鈕來禁用某些面板,但將其下面的所有其他面板轉移,以便它看起來順序。我對此感到非常難過。我想開發一個函數,它在一個被禁用的面板中傳遞,並在其下面的所有其他面板列表中使用遞歸重新排列所有面板。此功能可以工作,但不考慮如果一個面板的高度大於另一個面板的高度,則會在兩個面板之間留下額外的空間。任何幫助將非常感激。隱藏一個VB.Net後重新排列面板
Public Sub whatever(ByVal panel As Panel, ByVal list As List(Of Panel))
Dim temppanel As Panel = New Panel()
For Each item As Panel In list
temppanel.Location = New Point(temppanel.Location.X, item.Location.Y)
item.Location = New Point(item.Location.X, panel.Location.Y)
list.Remove(item)
whatever(temppanel, list)
If list.Count = 0 Then
Exit For
End If
Next
End Sub
圖片
http://imageshack.us/photo/my-images/268/panelsz.png/
屏幕截圖可能有助於解釋什麼是怎麼回事。你如何在初始化這個列表的時候先調用這個'whatever'函數? – LarsTech 2012-07-18 17:32:56
只要特定的按鈕被點擊,就會調用'whatever'函數。基於一個按鈕,我知道面板不再顯示了。我比循環,並找到面板下的所有面板不再顯示,我將所有這些面板存儲到一個列表中,而不是我調用任何功能與面板不再顯示,所有其他列表需要轉移的面板。我希望能回答你的問題。 – 2012-07-18 17:51:10
當你說「下」時,你的意思是在z順序下,還是在屏幕上垂直「下」的位置?另外,如果你所做的只是從中獲取一個位置,那麼不要將面板傳遞給你的函數,而是通過一個Point(或者矩形,如果你需要所有的座標)。 – tcarvin 2012-07-18 17:59:36