Перекрывающая краска Winform нарисована за нормальным контролем - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь переопределить OnPaint, но независимо от того, на каком элементе управления я это делаю, исходный элемент управления рисуется поверх OnPaint.

enter image description here

Справа - мое пользовательское поле со списком, слева - обычное поле со списком. Обратите внимание на тонкие цветные линии в верхней части моей пользовательской. Вот мое переопределение OnPaint:

public class StyleChooser : ToolStripComboBox
{
    protected override void OnPaint(PaintEventArgs e)
    {
        //base.OnPaint(e);

        e.Graphics.Clear(Color.Black);
        e.Graphics.FillRectangle(Brushes.Blue, new RectangleF(0, 0, this.Width / 2, this.Height));
    }
}

Вот как я добавляю его в форму:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        ToolStrip toolStrip = toolStrip1;
        StyleChooser a = new StyleChooser();
        toolStrip.Items.Add(a);
        toolStrip.Invalidate();
    }

}

Сама форма - это просто пустая форма с полосой инструментов и элементами управленияВы можете видеть помещенные в toolStrip.

Я пробовал с вызовом base.OnPaint и без него, и пробовал это с помощью выпадающего списка без набора инструментов, но поведение всегда было одинаковым. Есть идеи, почему он так поступает?

...