RichTextBox和UserPaint
我正在尝试绘制RichTextBox,但我能做到的唯一方法是调用OnPaint/OnPaintBackground
。
问题是除非“UserPaint”标志打开,否则不会调用OnPaint或OnPaintBackground,但是当此标志打开时 – 文本本身不会被绘制!
我该怎么解决这个问题?
这是我用来确保在RichTextBox首先处理绘画本身后调用OnPaint的代码:
class MyRichTextBox: RichTextBox { private const int WM_PAINT = 15; protected override void WndProc(ref System.Windows.Forms.Message m) { base.WndProc (ref m); if (m.Msg == WM_PAINT && !inhibitPaint) { // raise the paint event using (Graphics graphic = base.CreateGraphics()) OnPaint(new PaintEventArgs(graphic, base.ClientRectangle)); } } private bool inhibitPaint = false; public bool InhibitPaint { set { inhibitPaint = value; } } }