Доступ к объекту Label из Panel, все в ToolStripMenuItem - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь переместить объект Label из объекта Panel, в этом случае у меня есть родительская панель, у которой объекты Panel и Label являются дочерними, они создаются динамически. Цель состоит в том, чтобы при выполнении из ToolStripMenuItem при перемещении объекта Panel объект Label также перемещался.

Я сделал следующий код, но думаю, что не смог переместить объект Label. Из того, что я понимаю, я делаю, генерируя переменную, которая называется той же самой, что и метка, которая мне нужна, но мне нужно сослаться на существующий объект, а не на новый. (это правильно?)

Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click

    Dim clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel)
    clickedPanel.Location = New Point((clickedPanel.Location.X + 120), clickedPanel.Location.Y)

    Dim posX = clickedPanel.Location.X + 120
    Dim posY = clickedPanel.Location.Y

    Dim namelabel As New Label With {
        .Name = "Label" & clickedPanel.Name.Last
    }

    namelabel.Location = New Point((posX), posY)

End Sub

Не могли бы вы мне помочь?

Примечание: Я забыл что-то, в этом случае, если я переместлю Panel1, Label1 тоже будет двигаться , если я перемещу Panel2, Label2 тоже будет двигаться, et c, et c.

1 Ответ

0 голосов
/ 07 февраля 2020

Это код, в котором метка создается внутри панели динамически и перемещается вместе.

Private Sub NavButton15_ElementClick(sender As Object, e As NavElementEventArgs) Handles NavButton15.ElementClick

        Dim pos As Int32 = 50
        Dim poslabel As Int16 = 26
        Dim posY As Int16 = 330
        Dim posX As Int16 = 3
        Dim counter as Int16 = 1

        Panel1.AutoScrollPosition = New Point(0, 0)

        Dim pb As New Panel With
        {
            .Width = 120,
            .Height = 460,
            .Top = 10,
            .Left = 10,
            .BorderStyle = BorderStyle.FixedSingle,
            .BackgroundImage = Image.FromFile("C:\Example.bmp"),
            .BackgroundImageLayout = ImageLayout.Stretch,
            .ContextMenuStrip = CntxtMnuStrpSection,
            .Name = "Panel" & counter
        }

        Dim labela As New Label With {
                    .AutoSize = True,
                    .Location = New Point((poslabel), 12),
                    .Text = "Panel " & counter,
                    .ForeColor = Color.White,
                    .BackColor = Color.Transparent,
                    .Font = New Font(Me.Font, FontStyle.Bold),
                    .Name = "Label" & counter
                }

        pb.Location = New Point(pos, 20)

        Panel1.Controls.Add(pb)
        pb.Controls.Add(labela)

    End Sub

Это ToolStripMenuItem, куда перемещается панель с этикетка.

Private Sub ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem.Click

    Dim clickedPanel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel)
    clickedPanel.Location = New Point((clickedPanel.Location.X + 120), clickedPanel.Location.Y)

End Sub
...