我试图通过重写OnPaint或/和WndProc方法来更改WinForms自定义TextBox的外观。但是在两种情况下,在调用我的方法之前,Windows都已经绘制了基本的TextBox。 What's draw here
我的方法所做的是在其顶部绘制。
那么您知道该问题的任何解决方案吗?
文档说它可能无法实现(下面的链接:) https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/constituent-controls
public class TestTextBox : TextBox
{
public TestTextBox() : base ()
{
SetStyle(ControlStyles.UserPaint, true);
InitializeComponents();
}
protected override void OnPaint(PaintEventArgs e)
{
// base.OnPaint(e);
e.Graphics.DrawLine(new Pen(Color.Blue),10,10,70,10);
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
// base.OnPaintBackground(pevent);
pevent.Graphics.DrawLine(new Pen(Color.Red),10,10,90,10);
}
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PAINT)
{
Graphics g = this.CreateGraphics();
g.DrawLine(new Pen(Color.BlueViolet), 10, 10, 70, 10);
}
else
{
base.WndProc(ref m);
}
}
private void InitializeComponents()
{
this.BackColor = Color.Black;
this.ForeColor = Color.White;
}
}