PZero1992 Ответов: 1

Как: вылупился комобокс?


Привет,
Я пытаюсь сделать фон combobox вылупившимся. Я просто хочу, чтобы часть текстового поля была заштрихована, а не кнопка или выпадающий список.

Я написал следующий код, и он работает довольно хорошо, несмотря на то, что он вылупляется только на 100 мс, а затем внешний вид combobox возвращается к нормальному стилю.

public class HatchComboBox : System.Windows.Forms.ComboBox
{
    private bool _HATCHED = false;
        
    public HatchComboBox()
    {
    }

    public bool HATCHED
    {
        get
        {
            return _HATCHED;
        }

        set
        {
            _HATCHED = value;
            OnPaint(new PaintEventArgs(this.CreateGraphics(), this.ClientRectangle));
        }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        if (HATCHED) 
        {
            Graphics G = e.Graphics;
            G.Clear(this.BackColor);
            HatchBrush HBrush = new HatchBrush(HatchStyle.BackwardDiagonal, Color.Blue, this.BackColor);
            G.FillRectangle(HBrush, 0, 0, this.Width, this.Height);
            HBrush.Dispose();
            //G.Dispose();
        }
    }
}


Может быть, вы знаете, какое свойство я должен деактивировать или что-то в этом роде...
заранее спасибо

Что я уже пробовал:

Я попытался использовать свой код выше, но, как я уже сказал -> combobox обновляет себя и выглядит как раньше в течение примерно 100 мс.

1 Ответов

Рейтинг:
0

Richard MacCutchan

Вы используете неправильный метод рисования, см. Контроль.Метод OnPaintBackground (PaintEventArgs) (System.Окна.Формы)[^].


PZero1992

Привет Ричард,
спасибо за ответ, но проблема остается прежней... Есть еще идеи?

Richard MacCutchan

Я пробовал несколько экспериментов, но метод OnPaintBackground никогда не вызывается. Нам нужен эксперт по .NET, чтобы объяснить почему.

Он работает для главного окна (формы), но не для выпадающего списка.

Richard MacCutchan

Я думаю, что единственный способ сделать это-использовать один из методов OwnerDraw, как описано в комбинированный список.Свойство DrawMode (System.Окна.Формы)[^].