1

带有 5 个标签的 winforms 应用程序。每个标签都是从 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

我更希望提示用户查看他们是否要复制到剪贴板,如果我能完成这项工作,我还有其他三个可以轻松使用的菜单项创意。我可以将复制的变量传递到上下文菜单的第一个菜单项中吗?那么我可以为所有 5 个标签创建一个上下文菜单条,并根据您右键单击哪个标签,如果您右键单击然后从上下文菜单条中“复制链接”,它会给出正确的值?

4

1 回答 1

3

您不需要ContentMenuStrip为每个标签单独设置。您可以将其ContextMenuStrip应用于每个标签。完成此操作后,您可以轻松地确定是哪个控件从菜单的Opening事件或Click事件中打开了菜单ToolStripMenuItem

例如:如果您在 Opening 事件中并想找出哪个Label被右键单击,以便您可以添加不同的菜单项,您只需要强制转换ContextMenuStrip.SourceControl属性:

Label clickedLabel = (Label)contextMenuStrip.SourceControl;

一旦你在 Click 事件中,你想找出哪个Label被右键单击,你可以这样做:

ContextMenuStrip contextMenu = (ContextMenuStrip)((ToolStripMenuItem)sender).Owner;
Label clickedLabel = (Label)contextMenu.SourceControl;
于 2013-08-22T05:15:28.320 回答