0

Project と Customer の 2 つの項目で構成されるメニューストリップがあります。ユーザーの ID に基づいて、各アイテムには異なるサブアイテムがあります。ただし、私が直面している問題は、各サブアイテムを特定のフォームに接続する方法です。検索全体を通して、次のことを行いました。

Dim userid = Textbox1.text
if userid = "1001" then
                Dim p1 As New ToolStripMenuItem
                p1 = Form1.ProjectToolStripMenuItem
                p1.DropDownItems.Add("Add Project")
                AddHandler p1.DropDownItemClicked, AddressOf add_project_click
                Dim p2 As ToolStripMenuItem
                p2 = Form1.ProjectToolStripMenuItem
                p2.DropDownItems.Add("Modify Project")
else
                    Dim p2 As ToolStripMenuItem
                    p2 = Form1.ProjectToolStripMenuItem
                    p2.DropDownItems.Add("Modify Project")
end if
    Private Sub add_project_click(ByVal sender As Object, ByVal e As EventArgs)
        AddProjectForm.Show()

    End Sub

AddHandler p1.DropDownItemClicked, AddressOf add_project_clickプロジェクト項目をクリックして、[プロジェクトの追加] または [プロジェクトの変更] をクリックすると、両方とも [プロジェクトの追加] のフォームが表示されるため、問題が発生しました。

4

1 に答える 1

1

add_project_click のメソッドの定義を変更して、e が EventArgs タイプではなく ToolStripItemClickedEventArgs になるようにします。次に、e.SelectedItem.Text を使用して、クリックされた項目を特定できます。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim userid = "1001"

    Dim p1 As New ToolStripMenuItem

    p1.Text = "Menu Item"

    If userid = "1001" Then

        p1.DropDownItems.Add("Add Project")

    End If

    p1.DropDownItems.Add("Modify Project")

    MyMenuStrip.Items.Add(p1)

    AddHandler p1.DropDownItemClicked, AddressOf add_project_click

End Sub


Private Sub add_project_click(ByVal sender As Object, ByVal e As ToolStripItemClickedEventArgs)

    If e.ClickedItem.Text = "Add Project" Then

        'AddProjectForm.Show()

    Else

        'ModifyProjectForm.Show()

    End If

End Sub
于 2013-05-11T13:25:19.047 に答える