vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Kontextmenü Frage 
Autor: ModeratorDaveS (Moderator)
Datum: 27.10.09 13:23

Wenn du Shortcuts für die Menuitems definiert hast, musst du prüfen ob die Routine über Contextmenu aufgerufen wurde, wenn nicht muss es um das aktive Control handeln, da nur dieses Control die Tastatur-Eingabe bekommt. Es geht zB so
    Private Sub CutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal _
      e As System.EventArgs) Handles CutToolStripMenuItem.Click
        If ContextMenuStrip1.SourceControl IsNot Nothing Then
            CType(ContextMenuStrip1.SourceControl, TextBox).Cut()
        Else
            CType(Me.ActiveControl, TextBox).Cut()
        End If
    End Sub
(um ContextMenu aufzurufen muss das Control nicht unbedingt den Fokus haben).

Wenn du viele unterschiedliche Controls hast kannst du eine solche Routine programmieren
   Private Function GetControl(ByVal cm As ContextMenuStrip, ByVal ct As Type) _
     As Control
        Dim ctl As Control = cm.SourceControl
        If cm.SourceControl Is Nothing Then
            ctl = Me.ActiveControl
        End If
        If ctl Is Nothing Then Return Nothing
        If ctl.GetType Is ct Then Return ctl
        Return Nothing
    End Function
 
    Private Sub PasteToolStripMenuItem_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles PasteToolStripMenuItem.Click
        Dim tb As TextBox = CType(GetControl(ContextMenuStrip1, GetType( _
        TextBox)), TextBox)
        If tb IsNot Nothing Then tb.paste()
    End Sub
Oder noch ein wenig raffinierter mit generischer Funktion:
    Private Function GetControl(Of T As Control)(ByVal cm As ContextMenuStrip) _
      As T
        Dim ctl As Control = cm.SourceControl
        If cm.SourceControl Is Nothing Then
            ctl = Me.ActiveControl
        End If
        If ctl Is Nothing Then Return Nothing
        If TypeOf ctl Is T Then Return CType(ctl, T)
        Return Nothing
    End Function
 
    Private Sub PasteToolStripMenuItem_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles PasteToolStripMenuItem.Click
        Dim tb As TextBox = GetControl(Of TextBox)(ContextMenuStrip1)
        If tb IsNot Nothing Then tb.paste()
    End Sub
Zum Teil Geschmackssache, denke ich. Allerdings wenn du einfach "Ctrl-X" als Text angibst für das MenuItem behandelt TextBox ganz alleine diese Shortcuts, und du musst gar keinen zusätzlichen Code haben.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Kontextmenü Frage3.254shivan21.10.09 13:53
Re: Kontextmenü Frage2.714Maas21.10.09 14:31
Re: Kontextmenü Frage2.592shivan21.10.09 14:37
Re: Kontextmenü Frage2.639Maas21.10.09 14:44
Re: Kontextmenü Frage2.714shivan21.10.09 14:44
Re: Kontextmenü Frage2.505shivan21.10.09 14:46
Re: Kontextmenü Frage2.664ModeratorDaveS21.10.09 15:29
Re: Kontextmenü Frage2.498shivan22.10.09 15:44
Re: Kontextmenü Frage2.471shivan22.10.09 17:16
Re: Kontextmenü Frage2.635shivan21.10.09 15:41
Re: Kontextmenü Frage2.528shivan21.10.09 15:45
Re: Kontextmenü Frage2.635ModeratorDaveS21.10.09 16:02
Re: Kontextmenü Frage2.576shivan21.10.09 16:03
Re: Kontextmenü Frage2.637ModeratorDaveS21.10.09 16:08
Re: Kontextmenü Frage2.467shivan21.10.09 16:08
Re: Kontextmenü Frage2.606ModeratorDaveS21.10.09 16:13
Re: Kontextmenü Frage2.485shivan21.10.09 16:17
Re: Kontextmenü Frage2.551Maas21.10.09 16:24
Re: Kontextmenü Frage2.614ModeratorDaveS21.10.09 17:41
Re: Kontextmenü Frage2.541Maas21.10.09 17:43
Re: Kontextmenü Frage2.518shivan21.10.09 16:22
Re: Kontextmenü Frage2.640ModeratorDaveS21.10.09 16:26
Re: Kontextmenü Frage2.586shivan21.10.09 16:32
Re: Kontextmenü Frage2.435shivan21.10.09 17:14
Re: Kontextmenü Frage2.600Maas21.10.09 17:23
Re: Kontextmenü Frage2.598ModeratorDaveS21.10.09 17:42
Re: Kontextmenü Frage2.527shivan22.10.09 15:01
Re: Kontextmenü Frage2.374shivan22.10.09 15:21
Re: Kontextmenü Frage2.570ModeratorDaveS22.10.09 15:40
Re: Kontextmenü Frage2.417shivan26.10.09 14:25
Re: Kontextmenü Frage2.614Maas26.10.09 14:31
Re: Kontextmenü Frage2.452shivan26.10.09 14:55
Re: Kontextmenü Frage2.466Maas26.10.09 15:11
Re: Kontextmenü Frage2.429shivan26.10.09 15:29
Re: Kontextmenü Frage2.559shivan26.10.09 15:52
Re: Kontextmenü Frage2.503ModeratorDaveS26.10.09 16:24
Re: Kontextmenü Frage2.433shivan26.10.09 16:21
Re: Kontextmenü Frage2.455keco26.10.09 16:24
Re: Kontextmenü Frage2.506shivan26.10.09 16:40
Re: Kontextmenü Frage2.595shivan26.10.09 16:56
Re: Kontextmenü Frage2.523Maas26.10.09 17:06
Re: Kontextmenü Frage2.493keco26.10.09 17:11
Re: Kontextmenü Frage2.471shivan26.10.09 17:16
Re: Kontextmenü Frage2.514shivan26.10.09 17:28
Re: Kontextmenü Frage2.530shivan27.10.09 08:12
Re: Kontextmenü Frage2.690shivan27.10.09 08:38
Re: Kontextmenü Frage2.414ModeratorDaveS27.10.09 11:14
Re: Kontextmenü Frage2.597shivan27.10.09 08:49
Re: Kontextmenü Frage2.520Maas27.10.09 09:19
Re: Kontextmenü Frage2.459shivan27.10.09 09:40
Re: Kontextmenü Frage2.388shivan27.10.09 09:56
Re: Kontextmenü Frage2.405shivan27.10.09 10:39
Re: Kontextmenü Frage2.437ModeratorDaveS27.10.09 11:16
Re: Kontextmenü Frage2.357shivan27.10.09 11:21
Re: Kontextmenü Frage2.464shivan27.10.09 11:50
Re: Kontextmenü Frage2.626ModeratorDaveS27.10.09 13:23
Re: Kontextmenü Frage2.374shivan27.10.09 14:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel