Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2013, 20:04   #1
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию combobox прорисовка элементов

Здравствуйте!
вобщем проблема такая: переопределил DrawItem, рисую вот такой комбобокс:

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

вот код, который в OnDrawItem:
Код:
        private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
        {

            float size = 0;
            System.Drawing.Font myFont;
            FontFamily family = null;

            System.Drawing.Color animalColor = new System.Drawing.Color();
            size = 11;
            animalColor = System.Drawing.Color.Tan;
            family = FontFamily.GenericSansSerif;

            e.DrawBackground();            

            myFont = new Font(family, size, FontStyle.Regular);
            e.Graphics.DrawString(comboBox1.Items[e.Index].ToString(), myFont, System.Drawing.Brushes.Black, 1, 1 * e.Index * 30);
            myFont.Dispose();
            size = 8;
            myFont = new Font(family, size, FontStyle.Regular);
            e.Graphics.DrawString("files count: ", myFont, System.Drawing.Brushes.Black,1,1*e.Index*30+12+3);
            myFont.Dispose();
            e.DrawFocusRectangle();     
        }
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 09.07.2013, 13:09   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

не проверял, но смущают строки с e.Graphics.DrawString. Не уверен что правильно выбраны координаты.
Hollander вне форума Ответить с цитированием
Старый 09.07.2013, 13:45   #3
harimambura
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 45
По умолчанию

Да, вы правы, разобрался. Bounds из DrawItemEventArgs e передает координаты рисуемого элемента, а я их рассчитывал из индекса.
Остался только вопросик, как перерисовать выбранный элемент?
при наличии претензий перейдите сюда
harimambura вне форума Ответить с цитированием
Старый 09.07.2013, 19:22   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

У ComboBox есть свойство SelectedIndex, вот и сравнивай с e.Index
Hollander вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прорисовка на pictureBox. mdekalka C# (си шарп) 5 03.02.2013 19:32
Прорисовка графических элементов Александр Грагин Помощь студентам 0 03.10.2010 18:55
Прорисовка ListView akosh12345 Компоненты Delphi 6 04.06.2010 00:55
Добавить в массив требуемое кол-во элементов, потом создать в ComboBox Casper-SC Общие вопросы .NET 3 24.02.2010 20:05
с# прорисовка MAcK Общие вопросы .NET 1 29.08.2008 16:48