How to override copy and paste in richtextbox
To override the command functions:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.C)) { //your implementation return true; } else if (keyData == (Keys.Control | Keys.V)) { //your implementation return true; } else { return base.ProcessCmdKey(ref msg, keyData); }}
And right-clicking is not supported in a Winforms RichTextBox
--EDIT--
Realized too late this was a WPF question. To do this in WPF you will need to attach a custom Copy and Paste handler:
DataObject.AddPastingHandler(myRichTextBox, MyPasteCommand);DataObject.AddCopyingHandler(myRichTextBox, MyCopyCommand);private void MyPasteCommand(object sender, DataObjectEventArgs e){ //do stuff}private void MyCopyCommand(object sender, DataObjectEventArgs e){ //do stuff}
What about Cut while using Copy and Paste Handlers? When you have your custom implementation of OnCopy and you handle it by
e.Handled = true;e.CancelCommand();
OnCopy is also called when doing Cut - I can't find the way to find out whether method was called to perform copy or cut.
I used this:
//doc.Editor is the RichtextBox
DataObject.AddPastingHandler(doc.Editor, new DataObjectPastingEventHandler(OnPaste)); DataObject.AddCopyingHandler(doc.Editor, new DataObjectCopyingEventHandler(OnCopy)); private void OnPaste(object sender, DataObjectPastingEventArgs e) { } private void OnCopy(object sender, DataObjectCopyingEventArgs e) { }