Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0009: Die RichTextBox um ein Kontextmenu erweitern

 von 

Beschreibung

Das RichTextBox-Steuerelement aus dem Windows Forms-Paket besitzt standardmässig kein Kontextmenü und daher auch keine Unterstützung für die Tastaturkürzel zum schnellen Manipulieren seines Inhalts. In diesem Beispiel wird eine Klasse von RichTextBox abgeleitet, die das RichTextBox-Steuerelement mit einem entsprechenden Menü ausstattet.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [4,3 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2002/2003
' Option Strict:    An
' Option Explicit:  An
'
' Referenzen: 
'  - System
'  - System.Drawing
'  - System.Windows.Forms
'

' ##############################################################################
' ########################## ExtendedRichTextBox.vb ############################
' ##############################################################################
Option Explicit On 
Option Strict On
Option Compare Binary

Imports System.Windows.Forms

' <remarks>
'   Erweitert das Standard-RichTextBox-Steuerelement 
'   um ein Kontextmenü, das Standardfunktionen enthält.
' </remarks>
Public Class ExtendedRichTextBox
    Inherits RichTextBox

    Private WithEvents m_mnuCopy As New MenuItem()
    Private WithEvents m_mnuPaste As New MenuItem()
    Private WithEvents m_mnuCut As New MenuItem()
    Private WithEvents m_mnuDelete As New MenuItem()
    Private WithEvents m_mnuSelectAll As New MenuItem()

    ' <summary>
    '   Erstellt eine neue Instanz der Klasse.
    ' </summary>
    Public Sub New()
        MyBase.New()
        With m_mnuCopy
            .Index = 1
            .Shortcut = Shortcut.CtrlC
            .ShowShortcut = True
            .Text = "&Kopieren"
        End With
        With m_mnuPaste
            .Index = 2
            .Shortcut = Shortcut.CtrlP
            .ShowShortcut = True
            .Text = "&Einfügen"
        End With
        With m_mnuCut
            .Index = 3
            .Shortcut = Shortcut.CtrlX
            .ShowShortcut = True
            .Text = "&Ausschneiden"
        End With
        With m_mnuDelete
            .Index = 4
            .Shortcut = Shortcut.Del
            .ShowShortcut = True
            .Text = "&Löschen"
        End With
        With m_mnuSelectAll
            .Index = 5
            .Shortcut = Shortcut.CtrlA
            .ShowShortcut = True
            .Text = "Alles a&uswählen"
        End With
        Me.ContextMenu = New ContextMenu( _
            New MenuItem() { _
                m_mnuCopy, _
                m_mnuPaste, _
                m_mnuDelete, _
                m_mnuCut, _
                m_mnuSelectAll _
            } _
        )
    End Sub

    Protected Overloads Overrides Sub Dispose( _
      ByVal disposing As Boolean)
        MyBase.Dispose(disposing)
    End Sub

    Private Sub m_mnuCopy_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs) _
      Handles m_mnuCopy.Click
        Clipboard.SetDataObject( _
          New DataObject(DataFormats.Rtf, Me.SelectedRtf))
    End Sub

    Private Sub m_mnuPaste_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs) _
      Handles m_mnuPaste.Click
        Me.SelectedRtf = _
        CStr(Clipboard.GetDataObject().GetData(DataFormats.Rtf, True))
    End Sub

    Private Sub m_mnuCut_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs) _
      Handles m_mnuCut.Click
        Clipboard.SetDataObject(New _
          DataObject(DataFormats.Rtf, Me.SelectedRtf))
        Me.SelectedText = ""
    End Sub

    Private Sub m_mnuDelete_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs) _
      Handles m_mnuDelete.Click
        Me.SelectedText = ""
    End Sub

    Private Sub m_mnuSelectAll_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs) _
      Handles m_mnuSelectAll.Click
        Me.SelectAll()
    End Sub
End Class
' ##############################################################################
' ################################ MainForm.vb #################################
' ##############################################################################
Option Explicit On 
Option Strict On
Option Compare Binary

Imports System.Drawing

' <remarks>
'   Hauptformular der Anwendung.
' </remarks>
Public Class MainForm
    Inherits System.Windows.Forms.Form

End Class

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.