Поймать "отправителя" из панели в ToolStripMenuItem_Click - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь поймать отправителя «System Object» объекта «Panel», но в ToolStripMenuItem проблема заключается в том, что при входе в ToolStripMenuItem он получает отправителя ToolStrip, а не отправителя Panel. Не могли бы вы поддержать меня или показать, как получить отправителя объекта Panel из ToolStripMenuItem?

Это код.

Private Sub ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem.Click
    Dim clickedPanel As Panel = DirectCast(sender, Panel)
End Sub

Спасибо.

Код решения.

Это решение для меня, например, для перемещения объекта Panel.

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)

    End Sub

1 Ответ

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

Если у вас есть только один уровень пунктов меню, вы всегда можете получить доступ к SourceControl пункта меню, по которому щелкнули:

Private Sub ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem.Click
    Dim clickedPanel = DirectCast(DirectCast(DirectCast(sender,
                                                        ToolStripMenuItem).Owner,
                                             ContextMenuStrip).SourceControl,
                                  Panel)

    'Use clickedPanel here.
End Sub

Если у вас несколько уровней пунктов меню, то ошибка означает что SourceControl не всегда будет заполняться, поэтому вам нужно предварительно установить его, чтобы быть уверенным:

Private clickedPanel As Panel

Private Sub ContextMenuStrip_Opened(sender As Object, e As EventArgs) Handles ContextMenuStrip.Opened
    clickedPanel = DirectCast(DirectCast(sender,
                                         ContextMenuStrip).SourceControl,
                              Panel)
End Sub

Private Sub ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem.Click
    'Use clickedPanel here.
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...