none
Den Text eines MenuStrip bei rechtem Mausklick abragen. RRS feed

  • Frage

  • Hallo,

    in meinem Programm habe ich eine Menüleiste, hierfür möchte ich eine Tool schreiben, dass dem Anwedner die Möglichkiet gibt, den Namen der Menüleiste oder Einträge innerhalb der Einträge umzubenennen. Ich habe das schon mal erfolgreich bei Registerkarten hinbekommen.

    Private

     

    Sub TabControl1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseClick

     

    Try

     

    If Form2.WindowState = FormWindowState.Minimized Then

    Form2.WindowState = FormWindowState.Normal

     

    End If

     

    'Markiert den kompletten Text der TextBox wenn diese ge”ffnet wird

    Form11.TextBox1.SelectionStart = 0

    Form11.TextBox1.SelectionLength = Form11.TextBox1.Text.Length

     

    'Ende von: Markiert den kompletten Text der TextBox wenn diese ge”ffnet wird

     

    If e.Button = Windows.Forms.MouseButtons.Right Then

     

    MsgBox("Rechter Mausklick Ordner: " & TabControl1.SelectedTab.Text)

    Form11.Show()

    Form11.TextBox1.Focus()

    Form2.Hide()

     

     

    End If

     

    Catch ex As Exception

     

    'Keine Meldung festgelegt

     

    End Try

     

    End Sub

    Konkret geht es mir um diese Stelle:
    MsgBox("Rechter Mausklick Menü: " & TabControl1.SelectedToolStripItem.Text)

    Ein MenuStrip hat ja keinen Tab und es ist ja auch kein TabControl1 sondern ein MenuStripp1

    Wie ist denn die korrekte Methode, hier an die gewünschte Information zu kommen?
    Danke für eure Tipps
    Stefa


    Liebe Grüße Stefan
    Freitag, 18. September 2009 20:51

Antworten

  • Hallo Stefan,

    Ich habe ein bisschen herumgebastelt und ein MenuStrip auf einer Form gezogen die folgend aussieht:

    Datei                Tools

    Neu                  Laden

    Beenden          Löschen

    Der folgende Code Schnipsel zeigt dann den Text auf jedem Item an, wenn man rechst klickt.



    Private Sub NeuToolStripMenuItem1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NeuToolStripMenuItem1.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Neu"
            End If
    End Sub
    
    Private Sub BeendenToolStripMenuItem1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BeendenToolStripMenuItem1.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Beenden"
            End If
    End Sub
    
    Private Sub LadenToolStripMenuItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LadenToolStripMenuItem.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Laden"
            End If
    End Sub
    
    Private Sub LToolStripMenuItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LToolStripMenuItem.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Löschen"
            End If
    End Sub
    
    Private Sub MainDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DateiToolStripMenuItem.MouseDown, ToolsToolStripMenuItem.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
    
                Select Case myitem.Text
                    Case "Datei"
                        myitem.Text = "NeuerText anstatt Datei"
                    Case "Tools"
                        myitem.Text = "NeuerText anstatt Tools"
                End Select
    
            End If
    End Sub





    Selbstverständlich kann man auch den Text ändern indem man die folgende Zeile nutzt:

    myitem.Text = "NeuerText anstatt alter Text“

    Grüße,

    Robert

    Montag, 21. September 2009 14:59
    Moderator

Alle Antworten

  • Hallo Stefan,

    das ist doch der sender ? meine ich

    sender = sender.name  ' Name des geklickten Button
    sender = sender.text    ' Text des gecklickten Button



    so frage ich den Namen des gedrückten Button ab.
    somit müsste es auch bei anderen Controls Funktionieren


    bernd

    Samstag, 19. September 2009 09:30
  • Danke Bernd,

    ich probiers einfach mal aus.
    Stefan
    Liebe Grüße Stefan
    Sonntag, 20. September 2009 17:36
  • Hallo Bernd,

    das war leider nur ein Teilerfolg.

    Vielleicht muss ich noch mal beschreiben was ich möchte.

    Ich habe ein Haupmenü in dem z.B.


    Datei                  Tools
    Neu                    laden
    Beenden             löschen

    steht.

    Bei deiner Methode bekomme ich immer die selbe Information, nämlich dass ich MenuStrip1 geklickt habe.
    Bei der Methode hier unten bekomme ich angezeigt  &Datei
    Nachedem ich OK geklickt habe, steht dort dann  geht das?
    Soweit wollte ich das auch.
    Klicke ich nun aber bei Tools mit der rechten Maustaste, bekomme ich immer noch &Datei angezeigt also der gleiche Effekt wie bei der Geschichte mit sender.

    Bei der Registerkarte konnte ich die ausgwählte Registerkarte mit:

    TabPage1.Text = Form1.TabControl1.SelectedTab.Text ermitteln.

    Bei MenuStrip1 scheint das nicht zu gehen.



    Private

     

    Sub MenuStrip1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MenuStrip1.MouseClick

     

    If e.Button = Windows.Forms.MouseButtons.Right Then

    MsgBox(

    "Rechter Mausklick Ordner: " & Menu1ToolStripMenuItem.Text.ToString)

    Menu1ToolStripMenuItem.Text=

    "geht das?"

     

    'TabControl1.SelectedTab.Text = ProgrammName

     

    End If

     

    'sender = sender.name ' Name des geklickten Button

     

    'sender = sender.text ' Text des gecklickten Button

     

    End Sub

    Hast du noch eine Idee?
    Stefan


    Liebe Grüße Stefan
    Sonntag, 20. September 2009 18:23
  • Hallo Stefan,

    wenn ich auf einem Kontext Menu Strip klicke dann bringt er mir den Namen und den Text


     Private Sub KonStefan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KonStefan.Click
            MsgBox(sender.name & vbCrLf & sender.Text)
        End Sub
    Aber so wie ich das verstehe, möchtest du wenn du die rechte maustaste dückst. dass dann der name bzw. der text ewrscheint !?
    Dann musst du vermutlich mit Mouse Position arbeiten. Weil mit der rechten maustaste löst du ja nur das Kontext menu aus. nicht das eigentliche menu !?
    steh ich auf der Leitung ?


    Bernd
    Sonntag, 20. September 2009 21:14
  • Was ist wenn du bei Click das Menü laufen läst
    aber deine Funktion bei DoubleClick einbaust. Währe noch ne Idee.

    Bernd
    Montag, 21. September 2009 11:40
  • Hallo Stefan,

    Ich habe ein bisschen herumgebastelt und ein MenuStrip auf einer Form gezogen die folgend aussieht:

    Datei                Tools

    Neu                  Laden

    Beenden          Löschen

    Der folgende Code Schnipsel zeigt dann den Text auf jedem Item an, wenn man rechst klickt.



    Private Sub NeuToolStripMenuItem1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NeuToolStripMenuItem1.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Neu"
            End If
    End Sub
    
    Private Sub BeendenToolStripMenuItem1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles BeendenToolStripMenuItem1.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Beenden"
            End If
    End Sub
    
    Private Sub LadenToolStripMenuItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LadenToolStripMenuItem.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Laden"
            End If
    End Sub
    
    Private Sub LToolStripMenuItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LToolStripMenuItem.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
                '//myitem.Text = "NeuerText anstatt Löschen"
            End If
    End Sub
    
    Private Sub MainDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DateiToolStripMenuItem.MouseDown, ToolsToolStripMenuItem.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Dim myitem As ToolStripItem = DirectCast(sender, ToolStripItem)
                MessageBox.Show(myitem.Text)
    
                Select Case myitem.Text
                    Case "Datei"
                        myitem.Text = "NeuerText anstatt Datei"
                    Case "Tools"
                        myitem.Text = "NeuerText anstatt Tools"
                End Select
    
            End If
    End Sub





    Selbstverständlich kann man auch den Text ändern indem man die folgende Zeile nutzt:

    myitem.Text = "NeuerText anstatt alter Text“

    Grüße,

    Robert

    Montag, 21. September 2009 14:59
    Moderator