非常に複雑なWindowsフォームアプリを作成しました。私が今やろうとしているのは、別のボタンをクリックして一部のパネルを無効にし、その下にある他のすべてのパネルを上に移動して、順番に表示されるようにすることです。私はこれでとても苦労しています。無効になっているパネルとその下にある他のすべてのパネルのリストを渡し、再帰を使用してすべてのパネルを再配置する関数を開発したかったのです。この機能は機能しますが、一方のパネルの高さがもう一方のパネルよりも大きい場合、2つのパネルの間に余分なスペースが残ることは考慮されていません。どんな助けでも大歓迎です。
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
画像