2013-05-11 71 views
0

我有一個菜單條,它由兩個項目Project和Customer組成。基於用戶的ID,每個項目將具有不同的子項目。但是,我面臨的問題是如何將每個子項與特定的表單連接起來。在我的搜索,我做了以下內容:VB.NET中的菜單條子項控制

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因爲當我點擊項目項目,我單擊添加項目或修改項目,都將顯示添加項目的形式。

回答

1

更改您的add_project_click方法的定義,以便e是ToolStripItemClickedEventArgs而不是EventArgs類型。然後,您可以使用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