【发布时间】:2016-09-06 09:12:30
【问题描述】:
我创建了一个自定义文本框,其边框为红色。然后我启动我的应用程序,但这个 OnPaint 永远不会被调用。
我的代码是这样的:
public partial class UserControl1 : TextBox
{
public string disable, disableFlag;
public string Disable
{
get
{
return disable;
}
set
{
disable = value;
disableFlag = disable;
//OnPaint(PaintEventArgs.Empty);
}
}
public UserControl1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
this.Text = "testing 1";
if (disable == "true")
{
Pen redPen = new Pen(Color.Red);
Graphics graphics = this.CreateGraphics();
graphics.DrawRectangle(redPen, this.Location.X,
this.Location.Y, this.Width, this.Height);
// base.DrawFrame(e.Graphics);
}
}
}
请告诉我是什么问题(这是winform http://prntscr.com/ceq7x5 的快照)?
【问题讨论】:
-
添加自定义禁用标志毫无意义。使用 Windows 窗体 TextBox 控件已提供的 Enabled 属性。
-
是的,你是对的,我这样做是为了其他目的。请忽略它。
-
Graphics graphics = this.CreateGraphics();这是几乎总是错误的,试图拥有一个TextBox是总是 错了。不起作用。对不起。 TextBox 是遗留的,不会让你在上面画任何持久的东西,即使你做得对..
标签: c# .net winforms textbox user-controls