2013-08-24 2 views
0

У меня есть 30 ярлыков. Они могут иметь любую ценность, которую я хочу. Мне нужно уметь назначить для них одно контекстное меню, а затем определить, какая метка была нажата, чтобы использовать переменную x.contextmenustrip открытие события, определяющего отправителя

Private Sub Label_Click(sender As Object, e As MouseEventArgs) Handles  Label1.MouseClick, Label2.MouseClick, Label3.MouseClick, Label4.MouseClick, _ 
    Label5.MouseClick, Label6.MouseClick, Label7.MouseClick, Label8.MouseClick, Label9.MouseClick, Label10.MouseClick, Label11.MouseClick, _ 
    Label12.MouseClick, Label13.MouseClick, Label14.MouseClick, Label15.MouseClick, Label15.MouseClick, Label16.MouseClick, Label17.MouseClick, _ 
    Label18.MouseClick, Label19.MouseClick, Label20.MouseClick, Label21.MouseClick, Label22.MouseClick, Label23.MouseClick, Label24.MouseClick, _ 
    Label25.MouseClick, Label26.MouseClick, Label27.MouseClick, Label28.MouseClick, Label29.MouseClick, Label30.MouseClick 

    Dim x As String = sender.Text 
    xmlinteraction.appCall(x) 
    End Sub 

я получил удивительную помощь другой день passing variable into contextmenustrip Но я слишком новый, чтобы поставить все это вместе и заставить его работать. Я понимаю, что мы пытаемся сделать, но не весь синтаксис. Пожалуйста помоги.


Jay, Вот что я собрал из кода, который вы мне дали. Это то, о чем вы думали? Я чувствую, что я что-то пропустил и еще больше очистил код. Возможно удаление заявлений дела.

Private Sub rcmenuOption(x, y) 
     ' x is equal to what the menu item was clicked 
     ' Create case stament for that to call the correct xmlinteraction passing in y 
     Select Case x 
      Case "Copy Link" 
       copyClipboard(y) 
     End Select 
    End Sub 
    Private Sub rcmenuClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles rcmenu.ItemClicked 
     ' Get the Label clicked from the SourceControl property of the clicked ContextMenuStrip. 
     Dim contextMenu = DirectCast(sender, ContextMenuStrip) 
     Dim label = DirectCast(contextMenu.SourceControl, Label) 
     Dim var2 As String = label.Text 
     ' Get the clicked menu strip and update its Text to the Label's Text. 
     Dim toolStripItem = e.ClickedItem 
     Dim var As String = toolStripItem.Text 
     rcmenuOption(var, var2) 
    End Sub 

contextmenustrip opening event determining sender

+1

Мои извинения, Фил. Синтаксис, который я поставил в последнем ответе, был фактически C#. Виноват. Ответ ниже должен дать вам то, что вам нужно. – Adrian

+0

Я ценю это Адриана и никаких проблем ... Но теперь я сбиваю с толку еще больше. Я понимаю, что мы пытаемся сделать. Я просто не знаю, где мне нужно сделать прямой трансляции, потому что у меня нет кода для объявления щелчка правой кнопкой мыши. Поскольку я назначил contextmenustrip всем ярлыкам, я не знаю, где это событие правого щелчка хранится для приведения. Если я добавлю это открытие menustip, я получаю сообщение об ошибке. –

ответ

2

ОК, у вас есть целый ряд Labels в форме и все они используют одни и те же ContextMenuStrip (все Label s имеют их свойство ContextMenuStrip устанавливается в том же ContextMenuStrip управления).

Когда пользователь щелкает правой Label и выбирает пункт меню, вы хотите, чтобы пункт меню, то Text изменить к щелкнул Label «s Text.

Вы можете сделать это, используя обработчик событий ContextMenuStripItemClicked. Используйте отправитель обработчика и параметры ToolStripItemClickedEventArgs, чтобы получить LabelText и щелкнуть ссылку на ToolStripItem.

Private Sub ContextMenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ContextMenuStrip1.ItemClicked 
    ' Get the Label clicked from the SourceControl property of the clicked ContextMenuStrip. 
    Dim contextMenu = DirectCast(sender, ContextMenuStrip) 
    Dim label = DirectCast(contextMenu.SourceControl, Label) 

    ' Get the clicked menu strip and update its Text to the Label's Text. 
    Dim toolStripItem = e.ClickedItem 
    toolStripItem.Text = label.Text 
End Sub 
+0

Где я могу поставить DirectCast? x = отправитель в указанном выше коде для конечно левого щелчка. Вышеупомянутый код не должен быть изменен и отлично работает. Итак, когда я объявляю x = directcast, куда должен идти этот код? –

+0

Это в событии onload контекстного меню? –

+0

Я попробую и посмотрю, смогу ли я это понять. На данный момент, 8 часов полностью одобрены и более чем оценены. Что происходит, у меня есть 15-30 лейблов. Они привязаны к XML-файлу с именем appName и appLink. Таким образом, ярлык может иметь любое имя в зависимости от некоторых переменных, которые у меня есть. Поэтому мне нужно получить текст ярлыка и передать его в мой menustrip, поэтому, когда вы щелкните правой кнопкой мыши на любом из меток и скажете, что измените appLink, он изменит правильный. При необходимости я могу предоставить больше кода и более подробное объяснение. Но если мы сейчас на одной странице, это потрясающе. –

Смежные вопросы