Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.01.2022
Сообщений: 17

Изменение фона label

08.05.2025, 13:37. Показов 1513. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, помогите. Не могу разобраться, суть проблемы в следующем:

1. Читаю с COM порта, приходит в textbox сообщение (в зависимости какой из датчиков сработал "Sensor1" или "Sensor2")

2. По условию закрашиваю фон label

Если ввожу в ручную текст, фон label меняется в зависимости от условий. Если прилетает с COM не закрашивает. Может быть в событие дело?





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
 Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
        If TextBox3.Text = "Sensor1" Then
 
            Label9.BackColor = Color.Red
            TextBox3.Refresh()
            Label9.Refresh()
 
        Else
            Label9.BackColor = Color.Transparent
 
        End If
 
        If TextBox3.Text = "Sensor2" Then
 
            Label10.BackColor = Color.Red
            TextBox3.Refresh()
            Label10.Refresh()
 
        Else
            Label10.BackColor = Color.Transparent
 
        End If
    End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2025, 13:37
Ответы с готовыми решениями:

Почему изменение фона затрагивает не только изменение фона поля ввода?
Почему изменение фона через BackColor затрагивает не только изменение фона поля ввода в...

Изменение фона label'a при нажатии
Ребята помогите с приложением Cуть проблемы: у меня на форме располагаются 4 label'a, мне нужно по...

Удаление фона у Label
Добрый день друзья. Подскажите пожалуйса: 1) Как удалить фон у лэйбла, должен остаться только...

9
Любитель
 Аватар для Тим70
1039 / 739 / 160
Регистрация: 27.01.2019
Сообщений: 1,508
08.05.2025, 14:23
logdoc, Все работает
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
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox3.Text = "Sensor1"
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TextBox3.Text = "Sensor2"
    End Sub
 
    Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
        If TextBox3.Text = "Sensor1" Then
 
            Label9.BackColor = Color.Red
            TextBox3.Refresh()
            Label9.Refresh()
 
        Else
            Label9.BackColor = Color.Transparent
 
        End If
 
        If TextBox3.Text = "Sensor2" Then
 
            Label10.BackColor = Color.Red
            TextBox3.Refresh()
            Label10.Refresh()
 
        Else
            Label10.BackColor = Color.Transparent
 
        End If
    End Sub
End Class
Миниатюры
Изменение фона label   Изменение фона label  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,839
Записей в блоге: 1
08.05.2025, 14:32
Цитата Сообщение от logdoc Посмотреть сообщение
Если прилетает с COM не закрашивает. Может быть в событие дело?
Возможно вы меняете текст не из UI потока. Посмотрите чему равно в этот момент значение Thread.CurrentThread.ManagedThreadId. Если не 1, значит изменение текста нужно обернуть в Invoke.

P.S. Я бы переписал обработчик так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
 
    Highlight("Sensor1", TextBox3, Label9)
    Highlight("Sensor2", TextBox3, Label10)
    
End Sub
 
Private Shared Sub Highlight(text As String, tb As TextBox, lbl As Label)
    If tb.Text = text Then
        lbl.BackColor = Color.Red
        tb.Refresh()
        lbl.Refresh()
    Else
        lbl.BackColor = Color.Transparent
    End If
End Sub
0
 Аватар для Волшебник 307
1396 / 331 / 45
Регистрация: 16.04.2013
Сообщений: 786
Записей в блоге: 2
09.05.2025, 05:29
OwenGlendower, без Shared работает, Shared для чего?
0
2278 / 1595 / 399
Регистрация: 26.06.2017
Сообщений: 4,718
Записей в блоге: 1
09.05.2025, 21:11
Цитата Сообщение от Волшебник 307 Посмотреть сообщение
Shared для чего?
Shared.
0
 Аватар для Волшебник 307
1396 / 331 / 45
Регистрация: 16.04.2013
Сообщений: 786
Записей в блоге: 2
09.05.2025, 22:14
Uswer, то есть можно сослаться на эту процедуру из другой формы?
Или я не так понял?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,839
Записей в блоге: 1
09.05.2025, 23:35
Цитата Сообщение от Волшебник 307 Посмотреть сообщение
без Shared работает
Наличие или отсутствие Shared не должно влиять на работоспособность процедуры. В чем именно была проблема?

Цитата Сообщение от Волшебник 307 Посмотреть сообщение
Shared для чего?
Для того чтобы процедура работала только с аргументами.

Добавлено через 22 минуты
P.S. Хотя если вы не знаете что это такое, то наверное вы взяли мой пример за основу, но пытались обратиться к экземплярным членам класса и закономерно получили ошибку компиляции.
0
 Аватар для Волшебник 307
1396 / 331 / 45
Регистрация: 16.04.2013
Сообщений: 786
Записей в блоге: 2
10.05.2025, 13:49
OwenGlendower, а без Shared, с чем она работает?
С Shared работает с этими перемеными - text As String, tb As TextBox, lbl As Label, так?
то есть внутри этой процедуры другие переменные работать не будут, даже если они Public?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim bln As Boolean = TextBox1.Text = "сработал Sensor1"
        TextBox1.Text = If(bln, "сработал Sensor2", "сработал Sensor1")
        '---
        Highlight("сработал Sensor1", TextBox1, Label1)
        Highlight("сработал Sensor2", TextBox1, Label2)
    End Sub
 
    Private Sub Highlight(text As String, tb As TextBox, lbl As Label)
        lbl.BackColor = If(tb.Text = text, Color.Red, Color.Transparent)
    End Sub
Я не понимаю использования Shared здесь,
на что он влияет или какие преимущества/возможности дает?
0
2278 / 1595 / 399
Регистрация: 26.06.2017
Сообщений: 4,718
Записей в блоге: 1
11.05.2025, 09:50
Волшебник 307, из общего (Shared) метода можно обратиться только либо к локальным переменным переданным через параметры, либо также к общим членам класса (свойствам, полям и методам). Крайне рекомендую почитать любую книжку по .Net, там это подробно описывается.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,839
Записей в блоге: 1
11.05.2025, 22:38
Цитата Сообщение от Волшебник 307 Посмотреть сообщение
а без Shared, с чем она работает?
Уточню своё утверждение: Для того чтобы процедура гарантированно работала только с аргументами и/или shared переменными.

Цитата Сообщение от Волшебник 307 Посмотреть сообщение
С Shared работает с этими перемеными - text As String, tb As TextBox, lbl As Label, так?
Да. Если убрать Shared, то можно будет обратиться к экземплярным членам.

Цитата Сообщение от Волшебник 307 Посмотреть сообщение
то есть внутри этой процедуры другие переменные работать не будут, даже если они Public?
Public это модификатор доступа. Они тут роли не играют. Члены класса делятся на экземплярные (без Shared) и общие (Shared). Shared процедура/функция не может обращаться к экземплярным членам.

Цитата Сообщение от Волшебник 307 Посмотреть сообщение
Я не понимаю использования Shared здесь,
на что он влияет или какие преимущества/возможности дает?
Я его использовал чтобы подчеркнуть тот факт что процедура работает только со своими аргументами. На мой взгляд это облегчает чтение кода.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2025, 22:38
Помогаю со студенческими работами здесь

Загрузка картинки в виде фона в Label из русерса
Приветствую! Возникла проблема как загрузить программно картинку в виде фона в lable из файла...

ProgressBar. Отображение % выполнения на label - как сделать фон label прозрачным?
Есть прогрессбар, есть лэйбл, на котором отображается ход выполнения. Лэйбл помещена на...

Label накладывается на Label
Когда я ставлю 2 лейбла друг на друга, тот который сверху перекрывает весь текст нижнего и из за...

При наличии "=" в Label при нажатии цифры очищать TextBox и Label?
что нужно дописать, чтобы при наличии "=" в label при нажатии цифры очищалось и textBox и label? и...

[WPF] Размер формы от шрифта и текста label и перемещение формы мышкой по label
Здравствуйте. Возможно глупый вопрос но я новичек в wpf. Как там сделать размер формы в зависимости...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru