3

実行時にコンテキスト メニューを作成し、datagridview の選択したセルのテキストに依存します。
このような:

        With ContextMenuStrip1
            .Items.Clear()
            Dim Str As String = DataGridView1.Item(1, DataGridView1.CurrentRow.Index).Value

            Dim strArr() As String = Str.Split(" ")
            For count As Integer = 0 To strArr.Length - 1
                If strArr(count).Length > 1 Then
                    .Items.Add(strArr(count))
                End If
            Next

            .Items.Add("-")
            .Items.Add("Common operation ...")
            .Items.Add("Second common operation ...")
            AddHandler .Click, AddressOf cMenu_Click

            .Show(New Point(Cursor.Position.X, Cursor.Position.Y))
        End With
etc...

次に、次のようなイベント ハンドラーを追加します。

Private Sub cMenu_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim mytext As String
    mytext = (CType(sender, ContextMenuStrip).Text)
    Debug.Print(mytext)

    'after all...
    RemoveHandler ContextMenuStrip1.Click, AddressOf cMenu_Click
End Sub

そして、このコードのvbnet初心者として、イベントハンドラーで起動されたメニュー項目のテキストを取得できません。
ですから、それを手に入れるのを手伝ってください。

4

2 に答える 2

3

各メニュー項目にはハンドラーが必要です。

この方法で試してください(ショートカットキーを追加して更新):

For count As Integer = 0 To strArr.Length - 1
  If strArr(count).Length > 1 Then
    Dim newMenu As New ToolStripMenuItem(strArr(count), _
                                         Nothing, AddressOf cMenu_Click)
    newMenu.ShortcutKeys = Keys.Control Or Keys.C
    .Items.Add(newMenu)
  End If
Next

クリック方法は、ToolStripMenuItem代わりに処理するように変更する必要があります。

Private Sub cMenu_Click(ByVal sender As Object, ByVal e As EventArgs)
  Dim mytext As String
  mytext = DirectCast(sender, ToolStripMenuItem).Text
  Debug.Print(mytext)
End Sub
于 2012-06-22T21:55:05.930 に答える
0

ContextMenuStrip のすべての子項目のクリック イベントのハンドラー (同じメソッドを指す) を追加します。次に、メソッドでそれを ToolStripMenuItem または MenuItem クラス (使用しているものは何でも) としてキャストして、クリックされた項目のテキストを見つけます。

于 2012-06-22T21:43:44.427 に答える