如何修改RichTextBox
上绘制的数据?我已经尝试覆盖Text
属性,但它无法正常工作。
拦截WM_GETTEXT
然后修改Text
属性确实有效,但我丢失了所有格式信息:
protected override void WndProc(ref System.Windows.Forms.Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_GETTEXT)
{
var currentText = Marshal.PtrToStringAuto(m.LParam);
// Modify the text
currentText = currentText?.Replace("a", "b");
this.Text = currentText;
}
}
基本上我希望能够在绘制控件之前拦截RTF内容,然后用其他东西替换该RTF。我尝试拦截EM_STREAMOUT
,但在内容发生变化时似乎无法调用。