VB.NET Выполнение кода для событий для динамически добавленного ToolStripMenuItem
VB.NET
При открытии пункта меню (то есть пункта меню верхнего уровня) я добавил ToolStripMenuItem (то есть DropDownItem) к пункту меню во время выполнения.
ToolStripMenuItems, добавленные мной во время выполнения, являются именами форм, активных в текущем проекте.
При каждом щелчке по ToolStripMenuItem с определенным именем формы следует уделять внимание форме.
Как я могу выполнить нужный код для события динамически добавленного ToolStripMenuItem?
Private Sub WindowToolStripMenuItem_DropDownOpening(sender As Object, e As System.EventArgs) Handles WindowToolStripMenuItem.DropDownOpening
WindowToolStripMenuItem.DropDown.Items.Clear()
For Each Form In My.Application.OpenForms
If Not Form.name = frmLogin.Name And Not Form.name = Me.Name Then
Dim tmiForm = New ToolStripMenuItem()
tmiForm.Name = Form.name
tmiForm.Text = Form.text
WindowToolStripMenuItem.DropDownItems.Add(tmiForm)
End If
Next
End Sub
я хочу сфокусироваться на форме, основанной на событии click tmiForm...
Я пытался искать в Интернете, я получил только результаты для C#
3 ответа
Попробуй это-
Private Sub clickeventhandler(sender As Object, e As EventArgs)
For Each Form In My.Application.OpenForms
If CType(sender, ToolStripMenuItem).Name = Form.Name Then
Form.Focus()
Exit Sub
End If
Next
End Sub
Ваш предыдущий код выглядит нормально, просто добавьте одну строку.
После
WindowToolStripMenuItem.DropDownItems.Add(tmiForm)
написать это-
AddHandler tmiForm.Click, AddressOf clickeventhandler
Используйте AddHandler:
AddHandler tmiForm.Click, AddressOf ClickHandler
Вот как вы можете написать свой ClickHandler
:
Public Sub ClickHandler(ByVal sender As Object, ByVal e As EventArgs)
'for a condition based on a ToolStripMenuItem that fired it
'If CType(sender, ToolStripMenuItem).Name ...
End Sub
Я использовал более простой подход. Когда вы щелкаете по значку меню, в правой верхней части окна появляется маленькая стрелка. Нажмите на стрелку, чтобы открыть окно свойств меню. Вы можете установить видимые свойства, чтобы контролировать то, что будет видно в начальном меню. Вы также можете установить или очистить видимый атрибут в коде:
Public Sub MenuManage(Wayside As Integer, Vehicle As Integer, _
System As Integer, Tools As Integer, Reports As Integer, _
Edit As Integer, Zoom As Integer)
Main.WaysideToolStripMenuItem.Visible = Wayside
Main.VehicleToolStripMenuItem.Visible = Vehicle
Main.SystemToolStripMenuItem.Visible = System
Main.ToolsToolStripMenuItem1.Visible = Tools
Main.ReportsToolStripMenuItem.Visible = Reports
Main.EditToolStripMenuItem.Visible = Edit
Main.ZoomToolStripMenuItem.Visible = Zoom
End Sub
В коде события Load и FormClosed управляйте тем, что отображается в меню:
Вызов MenuManage(True, True, True, True, True, False, False)