2011-08-30 15 views
7

Jak mogę przesłonić funkcje kopiowania/wklejania w aplikacji Richtextbox C#. W tym ctrl-c/ctrl-v i kliknij prawym przyciskiem myszy kopiuj/wklej.Jak przesłonić kopiowanie i wklejać w richtextbox

To jest WPF richtextBox.

+0

Windows Form lub WPF? –

+0

dla Windows Forms: http://stackoverflow.com/questions/5618162/detecting-if-paste-event-occurred-inside-a-rich-text-box dla WPF zobacz tutaj: http: // stackoverflow .pl/questions/3061475/paste-event-in-a-wpf-textbox –

+0

@Davide, łącze WPF dodaje moduł obsługi, ale go nie zastępuje. – raym0nd

Odpowiedz

17

Aby zastąpić funkcje poleceń:

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); 
    } 
} 

I prawym przyciskiem myszy nie jest obsługiwana w WinForm RichTextBox

--EDIT--

Zrealizowany za późno, to było pytanie WPF. Aby to zrobić w WPF trzeba będzie dołączyć niestandardową kopiować i wklejać 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 
} 
+0

Czy wiesz, jak to zrobić w WPF? – raym0nd

+0

@ raym0nd: Zaktualizowałem swój kod. –

+0

@EdiwnProdukty WPF, które masz, dodaje handler, ale nie zastępują głównych cop/paste, są nadal nazywane – raym0nd

1

użyłem tego:
//doc.Editor jest 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) 
    { 

    } 
4

Co Cut podczas korzystania Skopiuj i wklej pilniki? Kiedy masz swój własny realizację oncopy i obsługiwać go przez

e.Handled = true; 
e.CancelCommand(); 

oncopy nazywany jest również, gdy robi Cut - Nie mogę znaleźć sposobu, aby dowiedzieć się, czy metoda została wezwana do wykonywania kopii lub wyciąć.

+1

Ja też, nie wiem, czy to Kopiuj, czy Wytnij –