Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
jkrnd
170 / 60 / 11
Регистрация: 22.12.2015
Сообщений: 2,203
1

Как организовать мигающий индикатор события?

15.10.2016, 10:02. Просмотров 960. Ответов 8
Метки нет (Все метки)

В цикле таймера периодически происходит очень короткое событие. Хотелось бы в этот момент видеть на форме вспыхивающий на короткое время "светодиод". Использование другого таймера для организации длительности вспышки думаю не очень хороший способ. Наверняка кто-то решал подобную задачу, пожалуйста, поделитесь.

Добавлено через 50 минут
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Private Sub IndicatorFlash() 'вспышка индикатора
        Dim gr As System.Drawing.Graphics = Me.CreateGraphics
        gr.PageUnit = GraphicsUnit.Pixel
        Dim br As New SolidBrush(Color.Red)
        Dim rc As New Rectangle(0, 0, 20, 20)
        gr.FillEllipse(br, rc)
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        IndicatorFlash()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim gr As System.Drawing.Graphics = Me.CreateGraphics
        gr.PageUnit = GraphicsUnit.Pixel
        Dim br As New SolidBrush(Me.BackColor)
        Dim rc As New Rectangle(0, 0, 20, 20)
        gr.FillEllipse(br, rc)
    End Sub
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2016, 10:02
Ответы с готовыми решениями:

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

Мигающий смайлик (смайлик улыбка) и Мигающий светофор
Очень нужно написать программы: 1. Мигающий смайлик (смайлик улыбка) 2. Мигающий светофор У...

Как сделать мигающий текст
Всем салам.. Как сделать, чтобы текст в label'е мигал?

Как сделать мигающий Label
Т.е. чтобы при запуске формы он некоторое время мигал. Просто виделf такое. Очень хотелось бы...

Как на форме сделать мигающий текст?
Привет всем! Хотел у Вас спросить как на форме сделать мигающий текст, с помощью какого компонента?...

8
godmode
43 / 43 / 7
Регистрация: 26.12.2014
Сообщений: 189
15.10.2016, 10:16 2
Именно форму хочеш подсветить? Может в панели задч понравится? Там и частота миганий настраивается и видно даже если форма свернута.
1
jkrnd
170 / 60 / 11
Регистрация: 22.12.2015
Сообщений: 2,203
15.10.2016, 10:30  [ТС] 3
godmode, конечно понравится, жду

Добавлено через 5 минут
мне главное с длительностью разобраться. то есть после запуска процедуры индикация должна потухнуть через 500 msek.

Добавлено через 29 секунд
разумеется не тормозя программу
0
godmode
43 / 43 / 7
Регистрация: 26.12.2014
Сообщений: 189
15.10.2016, 10:34 4
FlashWindow WinApi
Пример работы тут:[Форум]
Только оказывается там частота через таймер, я давно ей пользовался, может даже у себя где-то найду.
1
15.10.2016, 10:34
Памирыч
Почетный модератор
21147 / 8876 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
15.10.2016, 10:47 5
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

jkrnd, Ваш случай с индикатором:
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
    Structure Indicator
        Dim Enable, Light As Boolean
    End Structure
 
    Dim Ind As New Indicator
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Ind.Enable = Not Ind.Enable
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Ind.Enable Then
            IndicatorFlash(Ind.Light)
        Else
            IndicatorFlash(False)
        End If
        Ind.Light = Not Ind.Light
    End Sub
 
    Private Sub IndicatorFlash(ByVal Enbl As Boolean) 'вспышка индикатора
        Dim gr As System.Drawing.Graphics = Me.CreateGraphics
        If Enbl Then
            gr.PageUnit = GraphicsUnit.Pixel
            Dim br As New SolidBrush(Color.Red)
            Dim rc As New Rectangle(0, 0, 20, 20)
            gr.FillEllipse(br, rc)
        Else
            gr.Clear(Me.BackColor)
        End If
 
    End Sub
Добавлено через 58 секунд
godmode, прочитайте, пожалуйста, Правила в отношении ссылок на другие форумы
2
jkrnd
170 / 60 / 11
Регистрация: 22.12.2015
Сообщений: 2,203
15.10.2016, 13:12  [ТС] 6
Памирыч, то есть без использования контрола Timer вариантов нет?
0
Памирыч
Почетный модератор
21147 / 8876 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
15.10.2016, 14:04 7
jkrnd, Есть с потоками. Но там опять начинается геморрой с правильной организацией доступа к элементам управления.
1
jkrnd
170 / 60 / 11
Регистрация: 22.12.2015
Сообщений: 2,203
15.10.2016, 16:12  [ТС] 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
26
Public Class Form1
    Dim tmr As New Timer With {.Interval = 100}
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler tmr.Tick, AddressOf Tick
    End Sub
    Private Sub IndicatorFlash(ByVal fLight As Boolean)
        Dim gr As System.Drawing.Graphics = Me.CreateGraphics
        Dim br As SolidBrush
        If fLight Then 'зажигаем индикатор
            br = New SolidBrush(Color.Red)
        Else 'гасим индикатор
            br = New SolidBrush(Me.BackColor)
        End If
        Dim rc As New Rectangle(0, 0, 20, 20)
        gr.FillEllipse(br, rc)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        IndicatorFlash(True)
        tmr.Start()
    End Sub
    Private Sub Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'гасим индикатор
        IndicatorFlash(False)
        tmr.Stop()
    End Sub
End Class
1
Памирыч
Почетный модератор
21147 / 8876 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
15.10.2016, 16:34 9
jkrnd, если Вам нужно, чтобы индикатор просто один раз мигнул, то да.
Я просто Вас неправильно понял
1
15.10.2016, 16:34
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2016, 16:34

Мигающий курсор в форме. Как избавиться?
В форме, несмотря на запрет редактирования, добавления/удаления по-прежнему мотыляется курсор... От...

Как попроще убить мигающий курсор в RichTextBox?
(тот, что показывает текущую позицию в тексте, а не курсор мыши). Если объявить Enabled = false, то...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.