سؤال

ولست بحاجة لملء قائمة السياق من قاعدة بيانات في وقت التشغيل. أنا لا أعرف عدد العناصر التي من شأنها أن تكون في القائمة، لذلك أود أن التعامل مع الحدث انقر فوق في مكان واحد. كيف أعلن معالج ذلك استطيع ان اقول القائمة العنصر الذي تسبب في الواقع نقرة.

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top