Я пытаюсь переопределить OnPaint, но независимо от того, на каком элементе управления я это делаю, исходный элемент управления рисуется поверх OnPaint.
Справа - мое пользовательское поле со списком, слева - обычное поле со списком. Обратите внимание на тонкие цветные линии в верхней части моей пользовательской. Вот мое переопределение 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 и без него, и пробовал это с помощью выпадающего списка без набора инструментов, но поведение всегда было одинаковым. Есть идеи, почему он так поступает?