如何在Richtextbox C#应用程序中覆盖复制/粘贴功能。 包括ctrl-c / ctrl-v和右键单击复制/粘贴。
这是WPF richtextBox。
答案 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)
{
}