1

5 つのラベルを持つ winforms アプリ。各ラベルは、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

ユーザーがクリップボードにコピーするかどうかを確認するプロンプトが表示されることを強く望みます。それが機能する場合は、簡単に使用できるメニュー項目のアイデアが他に 3 つあります。コピーした変数を contextmenustrip の最初のメニュー項目に渡すことはできますか? それで、5 つのラベルすべてに対して 1 つの contextmenustrip を作成し、右クリックしたラベルに応じて、右クリックして contextmenustrip から「リンクをコピー」すると正しい値が得られますか?

4

1 に答える 1

3

ContentMenuStripラベルごとに個別に用意する必要はありません。ContextMenuStripすべてのラベルに適用できます。これが完了すると、メニューのOpeningイベントまたはメニューのClickイベントから、どのコントロールがメニューを開いたのかを簡単に判断できます。ToolStripMenuItem

例: Opening イベントにいて、どのメニュー項目が右クリックされたかを調べたい場合は、 ContextMenuStrip.SourceControlプロパティLabelをキャストするだけで、さまざまなメニュー項目を追加できます。

Label clickedLabel = (Label)contextMenuStrip.SourceControl;

Click イベントに入ったら、どれLabelが右クリックされたかを知りたい場合は、次のようにします。

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