将变量传递给contextmenustrip

时间:2013-08-22 02:05:17

标签: vb.net winforms

带有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中“复制链接”,它会给出正确的值?

1 个答案:

答案 0 :(得分:3)

您不需要为每个标签单独ContentMenuStrip。您可以将ContextMenuStrip应用于每个标签。完成后,您可以轻松确定从菜单的Opening事件或ToolStripMenuItem

Click事件中打开菜单的控件

例如:如果您处于Opening事件中并且想要找出右键单击了哪个Label,那么您可以添加不同的菜单项,只需要转换ContextMenuStrip.SourceControl属性:

Label clickedLabel = (Label)contextMenuStrip.SourceControl;

进入点击事件后,您想要找出右键单击的Label,您可以这样做:

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