2016-12-14 72 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)