绘制在RichTextBox上

本文关键字:RichTextBox 绘制 | 更新日期: 2023-09-27 18:17:20

我试图在RichTextBox中绘制单词和段落的边界,但当我打开UserPaint时,它不再绘制文本,而我的自定义绘画似乎有效。也许我只是忘了打开别的东西?这是我的

public partial class RichTextBoxEx : RichTextBox
{
    public RichTextBoxEx()
    {
        InitializeComponent();
        SetStyle(ControlStyles.UserPaint, true);
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        //Do some painting here
    }
}

使用这个问题的信息对我没有帮助

绘制在RichTextBox上

这对我来说很好:

class RichBox : RichTextBox {
  private const int WM_PAINT = 15;
  protected override void WndProc(ref Message m) {
    if (m.Msg == WM_PAINT) {
      this.Invalidate();
      base.WndProc(ref m);
      using (Graphics g = Graphics.FromHwnd(this.Handle)) {
        g.DrawLine(Pens.Red, Point.Empty, 
                   new Point(this.ClientSize.Width - 1,
                             this.ClientSize.Height - 1));
      }
    } else {
      base.WndProc(ref m);
    }
  }
}

在富文本框中的事件是一个痛苦的背部,因为他们不触发你认为他们应该触发的方式。这里有一个帖子,有人发布了最少需要的代码,有一个新的控件,通过托管一个丰富的文本框和拦截窗口绘制请求,为你公开适当的绘制事件。它是用VB编写的。