Как остановить Windows от рисования TextBox непосредственно Windows - PullRequest
0 голосов
/ 06 мая 2019

Я попытался изменить внешний вид пользовательского TextBox в WinForms, переопределив метод OnPaint или / и WndProc. Но в обоих случаях, прежде чем мой метод будет запущен, Windows уже рисует базовый TextBox. Что здесь нарисовано

И что делает мой метод, он рисует поверх него.

Итак, вы знаете какое-нибудь решение этой проблемы?

Документация говорит, что это может быть недостижимо (ссылка ниже :) 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...