Benutzer mit den meisten Antworten
Den Text eines MenuStrip bei rechtem Mausklick abragen.

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
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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 22. September 2009 08:17
- Als Antwort markiert Giftzwockel Mittwoch, 23. September 2009 18:36
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 -
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 -
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 -
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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 22. September 2009 08:17
- Als Antwort markiert Giftzwockel Mittwoch, 23. September 2009 18:36