我想在下面的代码中从第1行到第2行:
using System;
using System.Windows.Forms;
namespace MyNameSpace
{
internal class MyTextBox : System.Windows.Forms.TextBox
{
protected override void OnEnabledChanged(EventArgs e)
{
base.OnEnabledChanged(e);
Invalidate(); // Line #1 - can get here
Refresh();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
System.Diagnostics.Debugger.Break(); // Line #2 - can't get here
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎neiter Invalidate()和Refresh()会导致调用OnPaint(PaintEventArgs e).两个问题:
Nib*_*Pig 13
要覆盖控件的绘图,必须将样式设置为UserPaint,如下所示:
this.SetStyle(ControlStyles.UserPaint, true);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅此
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.setstyle.aspx
UserPaint如果为true,则控件将自行绘制而不是操作系统.如果为false,则不会引发Paint事件.此样式仅适用于从Control派生的类.