我正在尝试在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
}
}
使用this question中的信息对我没有帮助
答案 0 :(得分:6)
这对我有用:
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);
}
}
}
答案 1 :(得分:2)
富文本框中的事件背后是一种痛苦,因为它们不像您认为应该触发的那样触发。 Here's a post有人发布了所需的最低代码,以便拥有一个新控件,通过托管富文本框并拦截Windows绘制请求来为您公开正确的绘制事件。它在VB.Net中,但应该很容易翻译它供您使用。