【发布时间】:2011-04-11 07:32:14
【问题描述】:
有没有一种方法可以找出富文本框中是否发生了剪贴板粘贴事件?此事件将用于使用粘贴的文本块执行某些操作。
谢谢
这是我的代码
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_PASTE)
{
OnPasteOccurred();
MessageBox.Show("Pas");
}
if (m.Msg == 0x000F)
{
if (PaintControl)
{
base.WndProc(ref m);
}
else
{
m.Result = IntPtr.Zero;
}
}
else
{
base.WndProc(ref m);
}
}
编辑
我希望根据粘贴事件进行一些语法高亮或缩进,这个特定的code editor 似乎非常有效。我不知道它是如何做到的。在这个特定方向上需要帮助。我很确定必须有一些本机 Win32 代码或类似的东西可以被拦截。我尝试过跟踪键、鼠标事件,但它并不漂亮。
【问题讨论】:
-
快速网络搜索显示 RichTextBox 不通过向自身发送 WM_PASTE 来处理粘贴事件。所以我没有想法。
-
您可以将控件包装在您自己的自定义类中并覆盖Paste 方法。当然,这是假设粘贴时调用的方法。
-
嗯,在 .NET 2.0 中,不能覆盖 paste() 方法,原因可能是上面@David 给出的。
-
你不能只检查你的富文本控件是否有焦点,如果有,那么粘贴在里面吗?
标签: c# .net winforms richtextbox