Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятности с выделениями comboBox с картинками 
V
    Опции темы
Kolovorot
Дата 7.12.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: нет
Всего: 3



Нашел здесь на форуме код комбабокса с картинкми http://forum.vingrad.ru/forum/s/d19a89350f...opic-76824.html
Переделал под свою задачу:
Код

 private void compCmbBx_DrawItem(object sender, DrawItemEventArgs e)
        {
           
             //Рисуем серый прямоугльничек...
                e.Graphics.DrawRectangle(new Pen(Color.White, 1), new Rectangle(e.Bounds.X, e.Bounds.Y, 209, 15));
                if (e.Index != -1)
                {
                   
                    //Отрисовка в зависимости от состояния
                    if (System.Convert.ToBoolean(e.State) && System.Convert.ToBoolean(DrawItemState.Selected))
                    {
                      
                        e.Graphics.FillRectangle(Brushes.Gray, new Rectangle(e.Bounds.X, e.Bounds.Y, 209, 15));
                        //Рисуем картинку
                        e.Graphics.DrawImage(imageList1.Images[0], e.Bounds.X, e.Bounds.Y);
                        e.Graphics.DrawString("     " + compCmbBx.Items[e.Index].ToString(), new Font("Times New Roman",10), Brushes.White, e.Bounds.X, e.Bounds.Y);
                       
                    }
                    else
                    {
                        e.Graphics.FillRectangle(Brushes.White, new Rectangle(e.Bounds.X, e.Bounds.Y, 209, 15));
                        //Рисуем картинку
                        e.Graphics.DrawImage(imageList1.Images[0], e.Bounds.X, e.Bounds.Y);
                        e.Graphics.DrawString("     " + compCmbBx.Items[e.Index].ToString(), new Font("Times New Roman", 10), Brushes.Black, e.Bounds.X, e.Bounds.Y);
                       
                    }
                
            }
        }


Происходят следующие недоразумения:
1.На тестовой форме, если на форме имеется какой-либо другой контрол, то при Start Debugging с помощью кнопки все нормально, а если с помощью f5 то при прорисовки каждая строка считается выделенной и закрашивается серым цветом, т.е. System.Convert.ToBoolean(DrawItemState.Selected) возвращает true.
2. В самом же проекте(больше одного элемента на форме) вне зависимости от того как я запустил Start Debugging System.Convert.ToBoolean(DrawItemState.Selected) всегда возвращает true.

Нашел решение. Видимо в .NET 3.5 вместо условия (System.Convert.ToBoolean(e.State) && System.Convert.ToBoolean(DrawItemState.Selected)) нужно задать условие (e.State == (DrawItemState.Selected | DrawItemState.NoFocusRectDrawItemState.NoAccelerator) || e.State == DrawItemState.Selected)

Это сообщение отредактировал(а) Kolovorot - 8.12.2010, 15:09
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.