2011-08-30 38 views
7

¿Cómo puedo anular las funciones de copiar/pegar en una aplicación Richtextbox C#. Incluyendo ctrl-c/ctrl-v y haga clic con el botón secundario copiar/pegar.Cómo sobrescribir copiar y pegar en richtextbox

Es WPF richtextBox.

+0

formas de Windows o WPF? –

+0

para Windows Forms: http://stackoverflow.com/questions/5618162/detecting-if-paste-event-occurred-inside-a-rich-text-box para WPF ver aquí: http: // stackoverflow .com/questions/3061475/paste-event-in-a-wpf-textbox –

+0

@Davide, el enlace WPF agrega un controlador, pero no lo anula. – raym0nd

Respuesta

17

Para sustituir las funciones de mando:

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

Y botón derecho del ratón no está soportada en un Winforms RichTextBox

--EDIT--

cuenta demasiado tarde de que esto era una pregunta WPF. Para hacer esto en WPF tendrá que adjuntar una costumbre de copiar y pegar manejador:

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

¿Sabes cómo hacer eso en WPF? – raym0nd

+0

@ raym0nd: He actualizado mi código. –

+0

@EdiwnLas cosas de WPF que tiene, agrega un controlador pero no anula las principales de cop/paste, todavía se llaman – raym0nd

1

utilicé esta:
//doc.Editor es la 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

¿Qué hay de corte durante el uso ¿Copiar y pegar controladores? Cuando usted tiene su implementación personalizada de oncopy y lo manejas por

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

oncopy también se llama cuando se hace Cut - No puedo encontrar la manera de averiguar si el método fue llamado para realizar la copia o se corta.

+1

Yo también, no sé si es Copiar o Cortar –

Cuestiones relacionadas