| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Можно ли в Listboxe сделать, чтобы Itemы были |
| Автор: Naum 13.7.2006, 14:58 |
| Можно ли в Listboxe сделать, чтобы Itemы были разного цвета? Если можно, то как? |
| Автор: arilou 14.7.2006, 22:39 |
| Поковыряйся тут: http://vbaccelerator.com/home/NET/Code/Controls/ListBox_and_ComboBox/index.asp |
| Автор: DarkDragon 19.8.2006, 17:38 |
| Конечно можно!!! 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. Теперь остается немного подумать и доделать мой код. Если не справишься пиши на uzsartur@mail.ru, постараюсь помочь! |
| Автор: Exception 19.8.2006, 19:18 |
| 1) Пожалуйста, пользуйтесь тегами [ code = vb ] [ / code ] для подсветки кода! 2) Не стоит поднимать темы, которым более двух недель. Всё равно автор наверняка сам решил проблему. 3) Надо бы в FAQ засунуть... |