2013-03-19 1 views
0

VB.NET
На открытии пункта меню (т.е. пункт меню верхнего уровня), я добавил ToolStripMenuItem (т.е. DropDownItem) к пункту меню во время выполнения ,

Элементы ToolStripMenuItems, добавленные мной во время выполнения, - это имена форм, активных в текущем проекте.

Всякий раз, когда нажимается ToolStripMenuItem с определенным именем формы, форма должна быть выделена фокусом.

Как я могу выполнить желаемый код для события динамически добавленного ToolStripMenuItem?VB.NET Выполнить код на события для динамически добавлять 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 


я хочу, чтобы передать фокус в форме, основанной на события мыши в tmiForm в ...
я пытался искать в Интернете я только получил результаты для C#

ответ

0

попробовать this-

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) 

запись this-

AddHandler tmiForm.Click, AddressOf clickeventhandler 
2

Используйте 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 
+0

Мне нужно написать код для clickhandler? –

+0

и как это сделать? –

+0

@ ШрававанАчарья: конечно, каково бы ни было ваше запланированное действие (задайте фокус формы, в соответствии с вашим вопросом), поставьте его там. – Neolisk

0

Я использовал простой подход. Когда вы нажимаете на значок menustrip, в верхней правой части окна появляется небольшая стрелка. Нажмите стрелку, чтобы открыть окно свойств меню. Вы можете установить видимые свойства для управления тем, что будет видно в начальном меню. Вы можете также установить или удалить видимый атрибут в коде:

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 

В нагрузки и код события FormClosed, контролировать то, что видно в меню:

Вызов MenuManage (True, True, True, True, True, False, False)

 Смежные вопросы

  • Нет связанных вопросов^_^