带有5个标签的winforms app。 每个标签都是从XML文件中提取的变量。 我想要一个右键单击事件来将数据拉入上下文中。
现在我成功了一半。我可以点击右键复制网址:
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
我更希望提示用户查看是否要复制到剪贴板,如果我可以完成这项工作,我还可以轻松使用其他三个菜单项提示。 我可以将复制的变量传递给contextmenustrip的第一个菜单项。那么我可以为所有5个标签创建一个contextmenustrip,并根据您右键单击哪个标签,如果右键单击然后从contextmenustrip中“复制链接”,它会给出正确的值?
答案 0 :(得分:3)
您不需要为每个标签单独ContentMenuStrip
。您可以将ContextMenuStrip
应用于每个标签。完成后,您可以轻松确定从菜单的Opening事件或ToolStripMenuItem
例如:如果您处于Opening事件中并且想要找出右键单击了哪个Label
,那么您可以添加不同的菜单项,只需要转换ContextMenuStrip.SourceControl属性:
Label clickedLabel = (Label)contextMenuStrip.SourceControl;
进入点击事件后,您想要找出右键单击的Label
,您可以这样做:
ContextMenuStrip contextMenu = (ContextMenuStrip)((ToolStripMenuItem)sender).Owner;
Label clickedLabel = (Label)contextMenu.SourceControl;