2011-08-30 17 views
7

Come è possibile eseguire l'override delle funzioni di copia/incolla in un'applicazione Richtextbox C#. Includendo ctrl-c/ctrl-v e clic destro copia/incolla.Come eseguire l'override di copia e incolla in richtextbox

È un richtextBox WPF.

+0

forme di Windows o WPF? –

+0

per Windows Form: http://stackoverflow.com/questions/5618162/detecting-if-paste-event-occurred-inside-a-rich-text-box per WPF vedere qui: http: // StackOverflow .com/questions/3061475/paste-event-in-a-wpf-textbox –

+0

@Davide, il collegamento WPF aggiunge un gestore, ma non lo sovrascrive. – raym0nd

risposta

17

per ignorare il funzioni di comando:

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

E tasto destro del mouse non è supportato in una WinForms RichTextBox

--EDIT--

Realizzata troppo tardi questa è stata una domanda WPF. Per fare questo in WPF è necessario collegare un costume Copia e incolla gestore:

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

Sai come farlo in WPF? – raym0nd

+0

@ raym0nd: Ho aggiornato il mio codice. –

+0

@EdiwnIl materiale WPF che hai, aggiunge un gestore ma non sovrascrive quelli principali di cop/paste, vengono ancora chiamati – raym0nd

1

ho usato questo:
//doc.Editor è 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

Che dire Cut durante l'utilizzo Copia e incolla i gestori? Quando hai il tuo un'implementazione personalizzata di OnCopy e gestire da

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

OnCopy è chiamata anche quando si fa Cut - non riesco a trovare il modo per scoprire se il metodo è stato chiamato a svolgere copiare o tagliare.

+1

Anch'io, non so se è Copia o Taglia –

Problemi correlati