VB.NET-Tipp 0009: Die RichTextBox um ein Kontextmenu erweitern
von Herfried Wagner
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: | 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: |
' 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.