2013-08-22 4 views
1

winforms приложение с 5 ярлыками. Каждая метка представляет собой переменную, вытащенную из файла XML. Я хотел бы щелкнуть правой кнопкой мыши, чтобы вытащить данные в контекст.Передача переменной в contextmenustrip

Прямо сейчас у меня есть половина успеха. Я могу скопировать URL с правой кнопкой мыши:

Private Sub Label1_Click(sender As Object, e As MouseEventArgs) Handles Label1.MouseClick 
    Dim x As String = Label1.Text 
    If e.Button = Windows.Forms.MouseButtons.Right Then 
     Dim var As String = xmlinteraction.returnLink(x) 
     Clipboard.SetText(var, TextDataFormat.Text) 
    ElseIf e.Button = Windows.Forms.MouseButtons.Left Then 
     xmlinteraction.appCall(x) 
    End If 
End Sub 

Я бы предпочел пользователю будет предложено, чтобы увидеть, если они хотят, чтобы скопировать в буфер обмена, и если я могу сделать эту работу у меня есть три другие идеи пункт меню I можно легко использовать. Могу ли я передать скопированную переменную в первый пункт контекстного контекста. Итак, я мог бы создать один contextmenustrip для всех 5 меток и в зависимости от того, какой ярлык вы нажимаете правой кнопкой мыши, он дает правильное значение, если вы щелкните правой кнопкой мыши «Скопировать ссылку» из контекстного меню?

+0

Я выяснил способ сделать это, добавив контекстный список для каждой метки. Но может быть от 5 до 30, и я хочу, чтобы он был масштабируемым, а не 30 контекстными людьми в одной winform. –

ответ

3

Для каждой этикетки вам не нужно иметь отдельный ContentMenuStrip. Вы можете применить к каждому ярлыку номер ContextMenuStrip. После того, как вы сделали, что вы можете легко определить, какой контроль это было то, что открыл меню из Opening события параметра меню или из Click случае ToolStripMenuItem

Например: если вы были в случае открытия и хотел узнать который был Label правая кнопка мыши на так что вы можете добавить различные пункты меню, вам просто нужно бросить ContextMenuStrip.SourceControl свойства:

Label clickedLabel = (Label)contextMenuStrip.SourceControl; 

После того, как вы в замковом событии, и вы хотите, чтобы выяснить, какие Label были прав вы можете просто сделать это вот так:

ContextMenuStrip contextMenu = (ContextMenuStrip)((ToolStripMenuItem)sender).Owner; 
Label clickedLabel = (Label)contextMenu.SourceControl; 
+0

Я не могу вас поблагодарить. Это именно то, что я искал !!! –

+0

- это ваш код vb? –

+0

Открытая тема: http://stackoverflow.com/questions/18415128/contextmenustrip-opening-event-determining-sender –

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