我在運行時創建上下文菜單取決於datagridview的選定單元格中的文本。
像這樣:在運行時ContextMenuStrip事件處理程序
With ContextMenuStrip1
.Items.Clear()
Dim Str As String = DataGridView1.Item(1, DataGridView1.CurrentRow.Index).Value
Dim strArr() As String = Str.Split(" ")
For count As Integer = 0 To strArr.Length - 1
If strArr(count).Length > 1 Then
.Items.Add(strArr(count))
End If
Next
.Items.Add("-")
.Items.Add("Common operation ...")
.Items.Add("Second common operation ...")
AddHandler .Click, AddressOf cMenu_Click
.Show(New Point(Cursor.Position.X, Cursor.Position.Y))
End With
etc...
然後,添加事件處理程序是這樣的:
Private Sub cMenu_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim mytext As String
mytext = (CType(sender, ContextMenuStrip).Text)
Debug.Print(mytext)
'after all...
RemoveHandler ContextMenuStrip1.Click, AddressOf cMenu_Click
End Sub
此外,與此代碼,我不能在事件處理程序被解僱的菜單項的文本vbnet初學者。
所以請幫助獲取它。
謝謝拉爾斯!這工作非常好!我應該在不再需要的情況下移除處理程序嗎?或者我不應該這樣做?如果我在這種情況下應該怎麼做? –
@ user973238我不認爲這是必要的,因爲被清除的菜單項不存在於其他地方。沒有參考了。看到這個答案[在vb.net中,如果我使用AddHandler,我必須使用RemoveHandler嗎?](http://stackoverflow.com/a/7436068/719186) – LarsTech
是的,我非常感謝,現在我明白了更好。 –