如何在richtextbox中覆盖复制和粘贴

时间:2011-08-30 13:19:45

标签: c# wpf richtextbox

如何在Richtextbox C#应用程序中覆盖复制/粘贴功能。 包括ctrl-c / ctrl-v和右键单击复制/粘贴。

这是WPF richtextBox。

3 个答案:

答案 0 :(得分:18)

要覆盖命令功能:

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

Winforms RichTextBox

中不支持右键单击

- 编辑 -

实现太晚了,这是一个WPF问题。要在WPF中执行此操作,您需要附加自定义复制和粘贴处理程序:

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
}

答案 1 :(得分:4)

使用复制和粘贴处理程序时切割怎么样? 当您拥有OnCopy的自定义实现并通过

处理它时
e.Handled = true;
e.CancelCommand();

在执行剪切时也会调用OnCopy - 我找不到找出方法是否被调用来执行复制或剪切的方法。

答案 2 :(得分:2)

我用过这个:
//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)
    {

    }