ComboBox DropDownList и элементы из изображения и текста - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть ComboBox в WindowsForms, и я рисую элементы вручную.Каждый элемент состоит из изображения и текста, поэтому высота элемента составляет 34 пикселя.

Я хочу установить для DropDownStyle ComboBox значение DropDownList, чтобы разрешить ввод данных пользователем.Но когда я выбираю какой-то элемент, он деформируется, потому что картинка и текст видны.И я хочу отображать только текст, если пользователь выбирает какой-либо элемент.

protected override void OnDrawItem(DrawItemEventArgs e)
        {

            e.DrawBackground();

            if (e.Index > -1)
            {

                Piece item = this.Items[e.Index] as Piece;


                e.Graphics.FillRectangle(Brushes.Gray, new Rectangle(e.Bounds.Left + 6, e.Bounds.Top + 6, 22, 22));

                e.Graphics.DrawImage(item.Image, new Rectangle(e.Bounds.Left + 7, e.Bounds.Top + 7, 20, 20));

                e.Graphics.DrawString(item.Title, e.Font, 
                    new SolidBrush(e.ForeColor), e.Bounds.Left + 34, e.Bounds.Top + 10);

            }

            e.DrawFocusRectangle();

        }

Спасибо

1 Ответ

2 голосов
/ 25 февраля 2011

1) Вы имеете в виду DropDownStyle от DropDown?Это настройка, которая разрешает ввод данных пользователем.

2) Что вы подразумеваете под «деформированным» - и где вы это видите?


Редактировать: Если этот вызов OnDrawItem предназначен дляотображать верхнее поле - e.State имеет установленный битовый флаг ComboBoxEdit.Проверьте, чтобы это отображалось по-другому.

if( (e.State & DrawItemState.ComboBoxEdit) != DrawItemState.ComboBoxEdit ) 
{
    // Do drawing logic just for the top edit part
}
else
{
    // Draw logic here for rendering in the drop-down
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...