Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
 Аватар для MACHOMAN
54 / 30 / 4
Регистрация: 15.01.2014
Сообщений: 354

Сделать разными цветами текст в ListBox

29.09.2015, 23:41. Показов 5960. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно чтобы текст постоянно менял цвет в ListBox, как можно это осуществить?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Class Form1
    Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
        'Рисуем фон элемента управления ListBox для каждого элемента.
        e.DrawBackground()
        'Цвет кисти по умолчанию черный
        Dim myBrush As Brush = Brushes.Black
        'Задаем цвет для трех итемов
        Select Case e.Index
            Case 0
                myBrush = Brushes.Red
            Case 1
                myBrush = Brushes.Orange
            Case 2
                myBrush = Brushes.Purple
        End Select
        'Рисуем текст.
        e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault)
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'Задаем режим для рисования элемента
        ListBox1.Items.AddRange({"VB.NET", "C#.NET", "F#.NET"})
    End Sub
End Class
а при вводе нового теста он был другова цвета , вот так происходит

VB.NET
1
ListBox1.Items.Add(TextBox1.Text)
' Добавляем запись, с текстом, который введен в текст. поле
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2015, 23:41
Ответы с готовыми решениями:

Сделать разными цветами одну строку ListBox
Private Sub ColoredListBox_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) ...

Как сделать разные тексты разными цветами. Не несколько слов, а разные тексты разными цветами
Этот способ анимации идеально подходит для: </br> анимации трансформаций объекта, анимации камер, </br> анимации...

Как в listbox'e добавлять записи с разными цветами
Делаю чат, нужно чтобы кажды участник добавлял сообщения определенным цветом, как реализовать?

7
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
30.09.2015, 06:28
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Class Form1
    Dim Col As New List(Of Color)
    Dim R As New Random
    Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
        'Рисуем фон элемента управления ListBox для каждого элемента.
        e.DrawBackground()
        'Цвет кисти по умолчанию черный
        Dim myBrush As Brush = Brushes.Black
        If e.Index > -1 Then
            myBrush = New SolidBrush(Col(e.Index))
            'Рисуем текст.
            e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault)
        End If
 
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.DrawMode = DrawMode.OwnerDrawFixed 'Задаем режим для рисования элемента
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ListBox1.Items.Add(TextBox1.Text)
        Col.Add(Color.FromArgb(R.Next(0, 256), R.Next(0, 256), R.Next(0, 256)))
    End Sub
End Class
1
 Аватар для MACHOMAN
54 / 30 / 4
Регистрация: 15.01.2014
Сообщений: 354
01.10.2015, 16:20  [ТС]
ошибка Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index

как исправить?
Миниатюры
Сделать разными цветами текст в ListBox  
0
 Аватар для MACHOMAN
54 / 30 / 4
Регистрация: 15.01.2014
Сообщений: 354
01.10.2015, 17:25  [ТС]
При этом коде происходит плавное изменение цвета в ListBox. как можно реализавать этот же эффект для каждой строчки отдельно. чтобы каждый раз при добавлении строчки в тест плавно менял свой цвет

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Class Form1
   Dim G_z As New System.Threading.Thread(AddressOf G_start)
    Dim G_Col As Color
    Dim G_01 As Integer = 5
    Sub G_start()
        Do
            G_Col = Color.FromArgb(205, 255 - G_01 * 2.5, 0)
            ListBox1.ForeColor = G_Col
        Loop
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        G_z.Start()
        ListBox1.Items.Add(TextBox1.Text)
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        G_01 += 1
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
End Class
Миниатюры
Сделать разными цветами текст в ListBox  
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.10.2015, 17:58
Цитата Сообщение от MACHOMAN Посмотреть сообщение
ошибка Индекс за пределами диапазона
У меня что-то все про защищенную память пишет.
А Вы попробуйте в кнопке строки 21 и 22 поменять местами. А то элемент добавляется, а цвет - нет.

По второму коду не подскажу, там намечается какая-то жесть, имхо
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
01.10.2015, 21:43
Но ведь можно использовать ListView, где у каждого ListViewItem есть свойство ForeColor и BackColor.
0
 Аватар для MACHOMAN
54 / 30 / 4
Регистрация: 15.01.2014
Сообщений: 354
03.10.2015, 20:25  [ТС]
Значение не может быть неопределенным. Имя параметра: brush
что не так?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Public Class Form1
    Dim blue_message As Boolean = False ' Use Black or Blue Brush
    Dim AddMode As Boolean = False  ' Tells DrawItem that it is in Add to ListBox mode
    Dim intNewIndex As Integer ' The index of the new item to be added to the ListBox
    Dim arrColors(0 To 100) As Brush ' Space to save brush colors for each row in the ListBox
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        ListBox1.DrawMode = DrawMode.OwnerDrawFixed
    End Sub
 
    Private Sub listbox_add_Blue()
        blue_message = True
        AddMode = True
        intNewIndex = ListBox1.Items.Count
        ListBox1.Items.Add("Blue") ' adds the line to the list box
    End Sub
 
    Private Sub listbox_add_Black()
        blue_message = False
        AddMode = True
        intNewIndex = ListBox1.Items.Count
        ListBox1.Items.Add("Black") ' adds the line to the list box
    End Sub
 
    Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
        Dim myBrush As Brush = Brushes.Black
        e.DrawBackground()
        If AddMode AndAlso e.Index = intNewIndex Then
            If blue_message Then
                myBrush = Brushes.Blue
            End If
            e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, myBrush, _
                e.Bounds, StringFormat.GenericDefault)
            If e.Index > arrColors.GetUpperBound(0) Then ' Is the array filled
                ReDim Preserve arrColors(0 To arrColors.Count + 100) ' Make some more room
            End If
            arrColors(e.Index) = myBrush ' Save which brush we used
            AddMode = False ' Finished drawing the new item (It is the last row of the ListBox
        Else
            e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), _
                e.Font, arrColors(e.Index), _
                e.Bounds, StringFormat.GenericDefault)
        End If
        e.DrawFocusRectangle()
    End Sub
 
  
 
   
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        listbox_add_Black()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        listbox_add_Blue()
    End Sub
End Class
Миниатюры
Сделать разными цветами текст в ListBox  
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.10.2015, 21:48
MACHOMAN, пользуйтесь отладкой. На каждый чих писать на форум - Вы так будете до старости прогу дописывать
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2015, 21:48
Помогаю со студенческими работами здесь

ListBox, вывод содержимого разными цветами/шрифтами
Надо в ListBox ввести любой список уроков, например(математика, биология и т.д.) и каждый предмет был разного...

Выделение элементов ListBox разными цветами в зависимости от содержания каждого
Добрый день! Создаю программу для удобного чтения лог файла, файл формата .log который переносится в ListBox программы WPF. В лог файле...

Строки ListBox разными цветами VB5 или VB6 через API
Здравствуйте! Как сделать в VB5 или VB6 через API, чтобы текст в строках ListBox можно было раскрашивать в разные цвета? Я конечно...

Текст в консоли разными цветами
Пишу пару небольших сценариев на С. Как выводить текст в консоли разными цветами? Под Win я это делал WinAPI функциями, а как в *nix?

Текст в StrinGrid разными цветами
Кто нибудь может подсказать как сделать текст в StrinGrid разными цветами Пример Repeat BlockRead(f, B, 1); //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru