Feedback

C# - Standard-Kontextmenü zu RichTextBox-Control hinzufügen

Veröffentlicht von am 1/14/2010
(2 Bewertungen)
Fügt ein Standard-Kontextmenü zum Ausschneiden, Kopieren und Einfügen von Text einem RichTextBox-Control via. einer Extension-Methode hinzu.

Anwendung am besten in der Form-Klasse im Konstruktor hinter InitializeComponent():
rtbControl.ExtendWithContextMenu();
public static void ExtendWithContextMenu(this RichTextBox rtb)
{
    ContextMenuStrip ctx = new ContextMenuStrip();

    ToolStripMenuItem cut = new ToolStripMenuItem(
        "Ausschneiden", null, (sender, e) => rtb.Cut());
    
    ToolStripMenuItem copy = new ToolStripMenuItem(
        "Kopieren", null, (sender, e) => rtb.Copy());
    
    ToolStripMenuItem paste = new ToolStripMenuItem(
        "Einfügen", null, (sender, e) => rtb.Paste());

    ctx.Items.Add(cut);
    ctx.Items.Add(copy);
    ctx.Items.Add(paste);

    rtb.ContextMenuStrip = ctx;

    ctx.Opening += 
        (sender, e) =>
        {
            bool noSelectedText = string.IsNullOrEmpty(rtb.SelectedText);
            cut.Enabled = !noSelectedText;
            copy.Enabled = !noSelectedText;

            bool noClipboardText = string.IsNullOrEmpty(Clipboard.GetText());
            paste.Enabled = !noClipboardText;
        };
}

2 Kommentare zum Snippet

neuling321 schrieb am 6/4/2015:
Hallo

Bei mir VisualStudio 2013 funktioniert das Snippet nicht. Vielleicht liegt es auch daran das ich nicht weiss wo ich was hin kopieren muss :-(
Vielleicht kann mir da jemand helfen
Patrick Semmler schrieb am 6/4/2015:
Das ist eine Erweiterungsmethode. Füge eine neue Klasse zu Deinem Projekt hinzu und nenne sie z.B. "ExtentionMethods". Die Klasse muss als public static deklariert werden. In die Klasse fügst Du dann o.g. Methode ein. Anschließend kannst Du in Deinem Projekt bei jedem genutzter RichtTextBox die Methode ExtendWithContextMenu() aufrufen.
Mehr Infos zu Erweiterungsmethoden findest Du in der MSDN Hilfe:
https://msdn.microsoft.com/de-de/library/bb383977.aspx
 

Logge dich ein, um hier zu kommentieren!