Sprache: C#
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():
[code]rtbControl.ExtendWithContextMenu();[/code]
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;
};
}
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;
};
}
Alte URL:
/snippet/standard-kontextmenue-zu-richtextbox-control-hinzufuegen/1319
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
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