Как переместить объект между панелями? (Глаг
Привет, команда.
Я пытаюсь переместить объект типа панели (дочерняя панель), который находится внутри другого объекта типа панели (родительская панель а), на другую панель (родительская панель б), эти панели были созданы динамически.
Я знаю, что в этом случае необходимо получить объект-отправитель родительских панелей и даже там все хорошо, когда я перемещаю дочерний объект внутри его родительской панели, это делается без проблем, но когда я пытаюсь переместить его между родительскими панелями, он не выполняет никаких действий . Можете ли вы помочь мне показать, где моя ошибка? Я приложил сгенерированный код.
Заранее благодарю вас и приложенные усилия.
Что я уже пробовал:
Это для того, чтобы получить (вырезать)
Private Sub ToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel) p1Name = clickedPanel.Name paParent = clickedPanel.parent End Sub
Это нужно сделать (вставить)
Private Sub ToolStripMenuItem4_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem4.Click clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel) p2Name = clickedPanel.Name pbParent = clickedPanel.parent Call Swap() End Sub
Это делается для того, чтобы произвести обмен.
Private Sub Swap() '' build the panel names Dim varA As String = p1Name.ToString Dim varC As String = p2Name.ToString Dim PanelParent As Panel = paParent Dim PanelParent_b As Panel = pbParent Dim p3 = DirectCast(PanelParent.Controls.Find(p1Name, True).FirstOrDefault(), Panel) If p3 Is Nothing Then Throw New ArgumentException("index1") Dim p4 = DirectCast(PanelParent_b.Controls.Find(p2Name, True).FirstOrDefault(), Panel) If p4 Is Nothing Then Throw New ArgumentException("index2") Dim positionA As Integer = Panel1.AutoScrollPosition.X Panel1.AutoScroll = False Dim temp = p4.Location p4.Location = p3.Location p3.Location = temp Panel1.AutoScroll = True Panel1.AutoScrollPosition = New Point(positionA, Panel1.VerticalScroll.Maximum) End Sub
Попробуйте сделать и это тоже.
p3.Location = New Point(p3.Location.X, p3.Location.Y) PanelParent.Controls.Add(p3) p4.Location = New Point(p4.Location.X, p4.Location.Y) PanelParent_b.Controls.Add(p4)