إضافة معالجات لمكون حيوي قائمة السياق
-
08-07-2019 - |
سؤال
ولست بحاجة لملء قائمة السياق من قاعدة بيانات في وقت التشغيل. أنا لا أعرف عدد العناصر التي من شأنها أن تكون في القائمة، لذلك أود أن التعامل مع الحدث انقر فوق في مكان واحد. كيف أعلن معالج ذلك استطيع ان اقول القائمة العنصر الذي تسبب في الواقع نقرة.
Public Function GetBookmarkContextMenu(ByVal aBookmark As Bookmark) As System.Windows.Controls.ContextMenu
Dim myContextMenu As New Controls.ContextMenu
myContextMenu.Name = "BookmarkMenu"
For Each aMailingList As MasterService.FalconBookmarkMailingListType In GlobalUserSettings.MailingLists
Dim mySubMenuItem As New Controls.MenuItem
mySubMenuItem.Name = "MailingListName" & aMailingList.ID.ToString
mySubMenuItem.Header = aMailingList.Title
AddHandler (myMenuItem.Click), AddressOf ForwardToList_Click
mySubMenuItem.IsEnabled = True
myMenuItem.Items.Add(mySubMenuItem)
Next
myContextMenu.Items.Add(myMenuItem)
return myContextMenu
End Function
Public Sub ForwardToList_Click()
'How do I know which of the dynamically created items was clicked?
End Sub
المحلول
وForwardToList_Click الخاصة بك () يجب أن تتضمن معايير لمرسل والحدث وسائط:
Public Sub ForwardToList_Click(sender As Object, e As EventArgs)
'...
End Sub
و"المرسل" هو عنصر التحكم الذي تسبب في الحدث، وهو ما أعتقد أنك تبحث عنه.
نصائح أخرى
Dim mnuitm As New ToolStripMenuItem
mnuitm.Name = name_cbk.Items(i)
mnuitm.Text = name_cbk.Items(i)
AddHandler (mnuitm.Click), AddressOf item_Click
menulist.Items.Add(mnuitm)
لا يمكن إضافة تعليق لذلك أنا سوف أضع هنا. الرد ممتازة من AundyKarthick مجموعة بسهولة وكانت نتيجة هذا بلدي:
وأول خلق contextmenustrip على النموذج في هذه الحالة ContextMenuStrip1
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
NamesTableAdapter.Fill(DataSet.Names)
For Each element In DataSet.Names
Dim mnuitem As New ToolStripMenuItem
mnuitem.Name = element.Item(1)
mnuitem.Text = element.Item(1)
AddHandler (mnuitem.Click), AddressOf ToolMenuItem_Click
ContextMenuStrip1.Items.Add(mnuitem)
Next
End Sub
Private Sub ToolMenuItem_Click(sender As Object, ByVal e As EventArgs)
textbox1.Text = sender.name
End Sub
لا تنتمي إلى StackOverflow