我使用的是使用AxSHDocVw.AxWebBrowser
的winform HTML编辑器。
用户正在将其他软件中的文本复制并粘贴到此控件中。
问题是,在粘贴 Ctrl-V 时,它添加了一些字体标记以保留格式。
我不想保留格式,它应该粘贴干净的文本而不进行格式化,或者至少不应该添加FONT
标记。
我认为拦截 Ctrl-V 并在粘贴清理剪贴板文本之前。
所以,我尝试拦截WM_PASTE
消息并用固定测试替换剪贴板内容(只是为了检查),如下所示
class myWB : AxSHDocVw.AxWebBrowser
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x302) // Trap WM_PASTE:
{
Clipboard.Clear();
Clipboard.SetText("some text");
return;
}
base.WndProc(ref m);
}
}
但它没有用。我在IF块之前添加了以下内容,以查看它是否正在接收WM_PASTE
消息。
Debug.WriteLine(m.Msg);
在运行中,即使在多个 Ctrl-V 之后,我也没有在输出窗口中看到0x302(770)。
是否没有收到该消息?
然后是做什么的?如何在粘贴之前清理文本?
答案 0 :(得分:2)
WM_PASTE不是通知,它是命令。您将发送到EDIT控件以将其粘贴到控件中。
当然,网络浏览器不是编辑框,因此不会以同样的方式进行。您需要拦截IHtmlElement2.onpaste事件。