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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли в Listboxe сделать, чтобы Itemы были, разного цвета? 
V
    Опции темы
Naum
Дата 13.7.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 2
Всего: 15



Можно ли в Listboxe сделать, чтобы Itemы были разного цвета? Если можно, то как? 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
arilou
Дата 14.7.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61





--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
DarkDragon
Дата 19.8.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


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

Репутация: 5
Всего: 8



Конечно можно!!!

ListBox это наследуемый класс, т. е. его можно наследовать. Далее мы можем модернизировать этот класс.
Если мы это сделаем мы можем получить внутри класса защищенные методы. У ListBox'а есть 2 случая(Event)
1 - DrawItem (защищенный метод Protected Overrides Sub OnDrawItem), 2 - MeasureItem (Prot. Over. Sub OnMeasureItem). Ну их можно получить и не наследуя данного класса, просто добавить к реальному ListBox'у
два этих случая.

1 метод это то что будет рисовать лист бокс. 2 метод это то что, какой размер будет у Item'ов.
Вот маленький примерчик:

Class ModernListBox
    Inherits ListBox

    Sub New()

    End Sub

    Dim curclr As Color
    Dim brsh As SolidBrush
    Protected Overrides Sub OnDrawItem(ByVal e As DrawItemEventArgs)
        If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
            e.Graphics.FillRectangle(Brushes.Black, e.Bounds)
            e.Graphics.DrawString(Items.Item(e.Index), Font, Brushes.White, e.Bounds.X + 2, e.Bounds.Y + 1)
        Else
            e.Graphics.FillRectangle(brsh, e.Bounds)
            e.Graphics.DrawString(Items.Item(e.Index), Font, Brushes.Black, e.Bounds.X + 2, e.Bounds.Y + 1)
        End If
    End Sub

    Protected Overrides Sub OnMeasureItem(ByVal e As MeasureItemEventArgs)
        e.ItemWidth = Width
        e.ItemHeight = Font.Height + 2
    End Sub
End Class

Вот теперь ЛистБокс будет рисовать то что мы указали ему в методе OnDrawItem()
Не забудь у данного класса поставить DrawMode = Variable

ModernListBox.DrawMode = Vairable.
Теперь остается немного подумать и доделать мой код. Если не справишься пиши на [email protected], постараюсь помочь!
PM MAIL   Вверх
Exception
Дата 19.8.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 186



1) Пожалуйста, пользуйтесь тегами [ code = vb ] [ / code ] для подсветки кода!
2) Не стоит поднимать темы, которым более двух недель. Всё равно автор наверняка сам решил проблему.
3) Надо бы в FAQ засунуть...
PM   Вверх
Naum
Дата 24.8.2006, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 2
Всего: 15



Цитата(Exception @  19.8.2006,  19:18 Найти цитируемый пост)
2) Не стоит поднимать темы, которым более двух недель. Всё равно автор наверняка сам решил проблему.



Exception, да решил. Но так проще.


DarkDragon, BR. Пасиб.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

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

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


 




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


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

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