vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB5, VB609.06.05
autom. Kopieren/Einfügen im RTF-Control unterdrücken

Dieser Tipp zeigt, wie sich das autom. Kopieren und Einfügen von Text in einem RichTextBox-Control unterdrücken lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  14.457 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Folgendes Szenario: Sie verwenden statt einer normalen TextBox ein RichTextBox-Control. Über ein Menü stellen Sie dem Anwender auch Befehle zum Kopieren und Einfügen von Text zur Verfügung. Den beiden Menübefehlen haben Sie zudem die gängigen Shortcuts Strg+C und Strg+V zugewiesen. Verwendet man jetzt aber bspw. direkt innerhalb des RTF-Controls den Shortcut Strg+V, so wird der Inhalt der Zwischenablage doppelt eingefügt Grund hierfür ist, dass das RTF-Control selbständig auf die Tastenkombination STRG+V reagiert, aber gleichzeitig auch noch der Menübefehl ausgelöst wird, da diesem der Shortcut Strg+V zugewiesen wurde.

Um das autom. Kopieren/Einfügen im RTF-Control zu unterdrücken, gehen Sie wie folgt vor:

Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
  ' Tasten abfragen
  Select Case KeyCode
    Case vbKeyC, vbKeyV, vbKeyX
      ' Strg+C/Strg+V/Strg+X unterdrücken
      If Shift = 2 Then KeyCode = 0
    Case vbKeyInsert
      ' Strg+Insert -> Kopieren unterdrücken
      If Shift = 2 Then
        KeyCode = 0
        ' hier ggf. direkt den eigenen Menübefehl auslösen
        mnuCopy_Click
      ElseIf Shift = 1 Then
        ' Umsch+Insert -> Einfügen unterdrücken
        KeyCode = 0
        ' hier ggf. direkt den eigenen Menübefehl auslösen
        mnuPaste_Click
      End If
    Case vbKeyDelete
      If Shift = 1 Then
        ' Umsch+Delete -> Ausschneiden unterdrücken
        KeyCode = 0
        ' hier ggf. direkt den eigenen Menübefehl auslösen
        mnuCut_Click
      End If
  End Select
End Sub
' Kopieren (Strg+C)
Private Sub mnuCopy_Click()
  With RichTextBox1
    If Len(.SelText) > 0 Then Clipboard.SetText .SelText
  End With
End Sub
' Einfügen (Strg+V)
Private Sub mnuPaste_Click()
  If Clipboard.GetFormat(vbCFText) Then
    RichTextBox1.SelRTF = Clipboard.GetText()
  End If
End Sub
' Ausschneiden (Strg+X)
Private Sub mnuCut_Click()
  With RichTextBox1
    If Len(.SelText) > 0 Then 
      Clipboard.SetText .SelText
      .SelText = ""
    End If
  End With
End Sub