0

私は30のラベルを持っています。それらは私が望む任意の値を持つことができます。x 1 つのコンテキスト メニューをそれらすべてに割り当て、変数を使用するためにクリックされたラベルを特定できるようにする必要があります。

    Private Sub Label_Click(sender As Object, e As MouseEventArgs) Handles       Label1.MouseClick, Label2.MouseClick, Label3.MouseClick, Label4.MouseClick, _
    Label5.MouseClick, Label6.MouseClick, Label7.MouseClick, Label8.MouseClick, Label9.MouseClick, Label10.MouseClick, Label11.MouseClick, _
    Label12.MouseClick, Label13.MouseClick, Label14.MouseClick, Label15.MouseClick, Label15.MouseClick, Label16.MouseClick, Label17.MouseClick, _
    Label18.MouseClick, Label19.MouseClick, Label20.MouseClick, Label21.MouseClick, Label22.MouseClick, Label23.MouseClick, Label24.MouseClick, _
    Label25.MouseClick, Label26.MouseClick, Label27.MouseClick, Label28.MouseClick, Label29.MouseClick, Label30.MouseClick
    
   Dim x As String = sender.Text
   xmlinteraction.appCall(x)
    End Sub

先日、 contextmenustrip に変数を渡して素晴らしいヘルプを受け取りまし たが、すべてをまとめて機能させるには新人すぎます。私たちがやろうとしていることは理解していますが、すべての構文は理解していません。助けてください。


ジェイ、あなたがくれたコードをまとめたものです。これはあなたが考えていたことですか?まだ何かが足りないような気がして、コードをさらにきれいにします。ケースステートメントを削除する可能性があります。

   Private Sub rcmenuOption(x, y)
        ' x is equal to what the menu item was clicked
        ' Create case stament for that to call the correct xmlinteraction passing in y
        Select Case x
            Case "Copy Link"
                copyClipboard(y)
        End Select
    End Sub
    Private Sub rcmenuClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles rcmenu.ItemClicked
        ' Get the Label clicked from the SourceControl property of the clicked ContextMenuStrip.
        Dim contextMenu = DirectCast(sender, ContextMenuStrip)
        Dim label = DirectCast(contextMenu.SourceControl, Label)
        Dim var2 As String = label.Text
        ' Get the clicked menu strip and update its Text to the Label's Text.
        Dim toolStripItem = e.ClickedItem
        Dim var As String = toolStripItem.Text
        rcmenuOption(var, var2)
    End Sub

送信者を決定するcontextmenustripオープニングイベント

4

1 に答える 1

2

OK、Labelsフォームに多数の があり、それらはすべて同じものを使用しますContextMenuStrip(すべてのLabelContextMenuStripプロパティは同じContextMenuStripコントロールに設定されています)。

ユーザーが を右クリックしLabelてメニュー項目を選択すると、そのメニュー項目Textがクリックされた に変わりLabelますText

ContextMenuStrip ItemClickedこれは、イベント ハンドラーを使用して行うことができます。ハンドラーの送信者とToolStripItemClickedEventArgsパラメーターを使用して、 とクリックされたものへLabelText参照を取得します。ToolStripItem

Private Sub ContextMenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ContextMenuStrip1.ItemClicked
    ' Get the Label clicked from the SourceControl property of the clicked ContextMenuStrip.
    Dim contextMenu = DirectCast(sender, ContextMenuStrip)
    Dim label = DirectCast(contextMenu.SourceControl, Label)

    ' Get the clicked menu strip and update its Text to the Label's Text.
    Dim toolStripItem = e.ClickedItem
    toolStripItem.Text = label.Text
End Sub
于 2013-08-24T05:24:14.683 に答える