0

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


tmiForm のクリックイベントに基づいてフォームにフォーカスを当てたい...
Web で検索してみました C# の結果しか得られませんでした

4

3 に答える 3

3

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
于 2013-03-19T14:44:39.723 に答える
0

私はより単純なアプローチを使用しました。メニューストリップ アイコンをクリックすると、ウィンドウの右上部分に小さな矢印が表示されます。矢印をクリックして、メニュー プロパティ ウィンドウを開きます。表示プロパティを設定して、最初のメニューに表示される内容を制御できます。コードで visible 属性を設定またはクリアすることもできます。

    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) を呼び出す

于 2014-03-17T22:30:37.570 に答える
0

これを試して-

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

以前のコードは、1 行追加するだけで問題ないようです。

WindowToolStripMenuItem.DropDownItems.Add(tmiForm)

これを書いて-

AddHandler tmiForm.Click, AddressOf clickeventhandler
于 2013-03-19T15:45:29.083 に答える