2016-12-14 41 views
-1

我完全迷失在这里。我已经动态创建了一个菜单项。我已经添加了一个onclick事件处理程序,但是这段代码似乎从未触发过。我记得它在几个月前的工作,不记得做了任何改变,但可能是我做了一些愚蠢的事情。VB.Net Menuitem动态添加不点击事件

请参阅下面我的代码:

Public Sub MnuRecentApp(ByVal sender As Object, ByVal e As EventArgs) 
    ' MsgBox(sender.tag.ToString) 
    ApplicantID = sender.tag.ToString 
    frmApplicantEdit.Show() 
End Sub 

它被创建,但是当我点击它没有任何反应:

+0

在代码中,你分配方法'Test'的Click事件的处理程序,尝试在该行'的AddHandler tlRecentApp.Click改变它,AddressOf Test' – AugustoQ

+0

您需要提供更多信息或更好的工作示例。什么是* _mnuSep1_0,strMenuCaption,strMenuID,RecentAppID,mnuApplicantS *?我们不能只是猜测。 –

回答

0

如果代码

frmMain._mnuSep1_0.Visible = True 
Dim tlRecentApp As New ToolStripMenuItem(strMenuCaption) 
tlRecentApp.Text = "Test" 
tlRecentApp.Name = "AddApp" 
tlRecentApp.Tag = strMenuID 
RecentAppID = strMenuID 
AddHandler tlRecentApp.Click, AddressOf Test 
frmMain.mnuApplicantS.DropDownItems.Add(tlRecentApp.ToString) 

事件的代码事件处理程序是

Public Sub MnuRecentApp(ByVal sender As Object, ByVal e As EventArgs) 
    ' MsgBox(sender.tag.ToString) 
    ApplicantID = sender.tag.ToString 
    frmApplicantEdit.Show() 
End Sub 

那么这行

AddHandler tlRecentApp.Click, AddressOf Test 

应该

AddHandler tlRecentApp.Click, AddressOf MnuRecentApp 
+0

嗨,是的(道歉为不改变它),你是对的,我正在摆弄,试着让它工作。最初它是AddressOf MnuRecentApp,但它仍然没有工作 –

0

没有试图改变太多的代码我测试过的成功如下:

控制

Dim tlRecentApp As New ToolStripMenuItem(strMenuCaption) 
'tlRecentApp.Text = "Test" This isn't needed as it's done on the above line when declared 
tlRecentApp.Name = "AddApp" 
tlRecentApp.Tag = strMenuID 
RecentAppID = strMenuID 
AddHandler tlRecentApp.Click, AddressOf MnuRecentApp 
frmMain.mnuApplicantS.Items.Add(tlRecentApp) 

方法

Public Sub MnuRecentApp(ByVal sender As Object, ByVal e As EventArgs) 
    ApplicantID = CType(sender, ToolStripMenuItem).Tag.ToString 
    frmApplicantEdit.Show() 
End Sub 

mnuApplicantS是在我的例子一个ToolStrip控制。如果你可以澄清什么mnuApplicatS在你的应用程序,我可能能够提供更好的解决方案。

+0

嗨,也是一个ToolStrip菜单项。更改我的代码来匹配你的,但仍然不起作用... –

+0

@QSTrain很奇怪。我有能力在提供给你之前测试这个代码,它对我有用。你有没有复制过类似的代码?可能值得创建一个全新的项目,只需使用我的代码,看看它是否有效,而不是修改你的。 – Bugs

+0

嗨Jinx,我试着将你的代码复制到一个按钮上的主窗体上。在那里Intellisense/autocomplete不会给我一个项目选项(即项目不是mnuApplicantS的成员 - 因此它什么都不做。非常奇怪,因为你的代码会添加一个菜单项... –

0

我发现了这个问题。这条线:

frmMain.mnuApplicantS.DropDownItems.Add(tlRecentApp.ToString) 

应改为:

frmMain.mnuApplicantS.DropDownItems.Add(tlRecentApp)