我正在尝试为我的文本框创建自定义onPaint,它正在工作...它正在工作。但是当我尝试输入内容时,会在文本框上方渲染出另一个文本框。
这是我的构造函数:
这是我的构造函数:
public TextBox()
{
Font = new Font("Segoe UI", 11F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
BackColor = Color.White;
BorderColor = Color.Gray;
BorderStyle = BorderStyle.None;
SetStyle(ControlStyles.UserPaint, true);
}
同时在 onPaint 中:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillRectangle(backgroundBrush, 0, 0, this.Width, this.Height);
SizeF fontSize = g.MeasureString(Text, Font);
g.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(5, 5), cFormat);
g.DrawRectangle(borderPen, borderPen.Width / 2, borderPen.Width / 2,
this.Width - borderPen.Width, this.Height - borderPen.Width);
}
SetStyle(ControlStyles.UserPaint, true);
会让你自己绘制所有的东西,这太复杂了。如果你想要一个带有自定义边框的TextBox
,我认为还有另一种方法可以实现,而不是用这种方式进行绘制。 - King King