Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
1

Задать цвет кнопок элементами списка

15.08.2012, 07:33. Показов 2678. Ответов 10
Метки нет (Все метки)

Имеется несколько командных кнопок(Button), они связаны со списком из ListBox( при нажатии на кнопку соответствующая по индексу строка из ListBox выводится в Label, и эта строка ловит фокус)
и суть проблемы:
Требуется чтобы кнопки(Button) имели соответствующие строкам цвета..
и я не могу придумать как можно это реализовать..
- можно ли сделать так, если в строке есть слово красный то кнопка с соответствующим индексом приобретает красный фон?
-или можно сотворить это через ComboBox(выделать кнопку и выбирать для нее цвет из имеющихся вариантов)
или еще есть варианты??

Добавлено через 16 часов 43 минуты
както вот так можно это сделать?
VB.NET
1
2
3
4
5
If ListBox1.Items(index:=0) = "" + "Красный" + "" Then
            Button1.BackColor = Color.Red
        Else
            Button1.BackColor = Color.Silver
        End If
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2012, 07:33
Ответы с готовыми решениями:

Как задать цвет для списка?
Привет всем. Есть список сделанный через блоки и нужно, чтобы при выборе чекбокса в списке нужная...

Задать стили (цвет текста) списку. Как задать цвет текста
Помогите задать стили(цвет текста) списку. Как задать цвет текста ? <div class="menu"> <ul>...

Цвет кнопок
Как изменить цвет кнопок? Я вроде слышал, что как-то на API можно сделать. Ну или допустим...

Как связать элементы одного списка с элементами списка другого ComboBox?
Помогите, пожалуйста, как связать элементы одного списка в Delphi с элементами списка другого...

10
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
15.08.2012, 08:17 2
В вашем случае можно использовать хеш-таблицу. Вот пример:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Form1
    Dim listColors As New Hashtable()
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim a() As String = {"Красный", "Желтый", "Зеленый"}
        ListBox1.Items.AddRange(a)
 
        listColors.Add("Красный", Color.Red)
        listColors.Add("Желтый", Color.Yellow)
        listColors.Add("Зеленый", Color.Green)
    End Sub
 
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Button1.BackColor = CType(listColors.Item(ListBox1.SelectedItem.ToString), Color)
    End Sub
End Class
1
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
15.08.2012, 08:34  [ТС] 3
Недоганяю как ее можно использовать в моем примере.. или можно как то выловить фокус по кнопке, и потом в дополнительном Listbox'е выбрать для нее цвет?
в строках не только название цвета но и другая информация, да и кнопок много
можно ли как то через условия сделать чтобы: если в строке есть нужное слово (слово всегда где то в середине) то кнопка с таким же как и у строки индексом перекрашивалась в нужный цвет
0
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
15.08.2012, 08:37 4
Я же вам готовый пример дал. При выборе позиции в листбоксе идет проверка таблицы на предмет того какой цвет соответствует выбранной строке. И если значение по ключу было найдено, цвет присваивается кнопке.
0
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
15.08.2012, 08:48  [ТС] 5
ну вот 30 кнопок и 30 строк цветов всего 4
0
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
15.08.2012, 08:54 6
Ну так принцип то тот же самый. Индекс кнопки=индексу строки. Смотрим что по этому индексу в листбоксе. Ага, красный. Что такой красный в таблице - аааааааа это Color.Red. Инициализируем фон кнопки.
1
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
15.08.2012, 09:28  [ТС] 7
ок щас попробую разобраться

Добавлено через 29 минут
НИфига не получилось разобраться)
попробовал сделать так:
VB.NET
1
2
3
4
5
6
7
8
9
If ListBox1.Items(index:=0) = "" + "Красный" + "" Then
            Button1.BackColor = Color.Red
        ElseIf ListBox1.Items(index:=0) = "" + "Синий" + "" Then
            Button1.BackColor = Color.Blue
        ElseIf ListBox1.Items(index:=0) = "" + "Желтый" + "" Then
            Button1.BackColor = Color.Yellow
        Else
            Button1.BackColor = Color.Silver
        End If
-но.. если помимо слова красный (или др цвет) в строке есть другие слова то окрашивается в серебро... я думал что эта байдень (("" + "Красный" + "" ))должна выцеплять слово из строки но чет не работает.
-и пока не разобрался как индексы сравнять чтобы для каждой позиции такое не писать..

 Комментарий модератора 
Используйте теги кода не VB, а VBNET
0
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
15.08.2012, 10:20 8
ну немного модифицируем
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
Public Class Form1
    Dim listColors As New Hashtable()
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim a() As String = {"еререКрасныйрка", "Желтый", "Зеленый"}
        ListBox1.Items.AddRange(a)
 
        listColors.Add("Красный", Color.Red)
        listColors.Add("Желтый", Color.Yellow)
        listColors.Add("Зеленый", Color.Green)
    End Sub
 
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Button1.BackColor = listColors.Item(getKey(ListBox1.SelectedItem))
    End Sub
 
 
    Private Function getKey(ByVal item As String) As String
        For i As Integer = 0 To listColors.Count - 1
            If InStr(item, listColors.Keys(i)) Then
                Return listColors.Keys(i)
            End If
        Next
        Return vbNullString
    End Function
End Class
0
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
15.08.2012, 11:00  [ТС] 9
я понимаю что наверняка затупливаю) но!) когда я добавляю новые строки
VB.NET
1
2
3
4
5
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Button1.BackColor = listColors.Item(getKey(ListBox1.SelectedItem))
        Button2.BackColor = listColors.Item(getKey(ListBox1.SelectedItem))
        Button3.BackColor = listColors.Item(getKey(ListBox1.SelectedItem))
    End Sub
то у меня при отладке когда я нажимаю по строке в которой прописан цвет окрашиваются все три кнопки
я видимо как то некорректно объяснил что ищу....
я создаю в листбоксе новую строку(через textBox): "кубик красный деревянный" и кнопка "1" у меня стала красной и так и осталась
создаю следующую строку "кубик синий деревянный" и вторя кнопка у меня стала синей
и тд в случайном порядке
0
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
16.08.2012, 11:37  [ТС] 10
сделал)
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  Class Sample
        Public Shared Sub Main()
            Dim s1 As String = ""
            Dim s2 As String = "Желтый"
            Dim b As Boolean
            b = s1.Contains(s2)
            Console.WriteLine("Is the string, s2, in the string, s1?: {0}", b)
 
  Dim g1 As String = ""
            Dim g2 As String = "Синий"
            Dim e As Boolean
            e = g1.Contains(g2)
            Console.WriteLine("Is the string, s2, in the string, s1?: {0}", e)
 
            Dim q1 As String = ""
            Dim q2 As String = "Красный"
            Dim z As Boolean
            z = q1.Contains(q2)
            Console.WriteLine("Is the string, s2, in the string, s1?: {0}", z)
End Class

VB.NET
1
2
3
4
5
6
7
8
If ListBox1.Items(0).Contains("Желтый") Then
            Button1.BackColor = Color.Yellow
        ElseIf ListBox1.Items(0).Contains("Синий") Then
            Button1.BackColor = Color.Blue
        ElseIf ListBox1.Items(0).Contains("Красный") Then
            Button1.BackColor = Color.Red
        Else
            Button1.BackColor = Color.White
вот только можно ли сделать чтобы на 30 кнопок это не прописывать ?? как то сократить..
0
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
16.08.2012, 15:26 11
идея с хэш-таблицей как раз и была призвана уменьшить код в 30 раз. советую все-таки применить ее здесь. все для этого у тебя есть.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2012, 15:26

Цвет кнопок меню
Есть структура: <nav id="main-nav"> <ul> <li><a href="456.html">ГЛАВНАЯ</a></li> ...

Из заданного списка составить два новых - один с положительными элементами исходного списка, второй - с остальными
помогите пожалуйста сделать программу на с++ , задача такова: Описать процедуру , которая по...

Как задать фильтр списка в зависимости от другого списка?
Наверняка глупый вопрос но я чайник, Ситуация следующая: имеются связанные таблицы 1. станции...

Поменять цвет формы и кнопок
Приветсвую! как поменять цвет формы и кнопок ? не вижу свойства color у них


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru