7

我正在尝试在 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
    }
}

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

4

2 回答 2

8

这对我来说没问题:

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);
    }
  }
}
于 2013-06-07T18:38:17.533 回答
2

富文本框中的事件很麻烦,因为它们不会按照您认为应该触发的方式触发。这是一篇帖子,其中有人发布了最低要求的代码,以拥有一个新控件,该控件通过托管富文本框并拦截 Windows 绘制请求来为您公开正确的绘制事件。它在 VB.Net 中,但应该很容易翻译以供您使用。

于 2013-06-07T18:36:45.487 回答