Могу ли я сделать ярлык (с помощью кода) и заставить его исчезнуть через несколько секунд? - PullRequest
0 голосов
/ 28 января 2020

Я хочу использовать метку в качестве уведомления для нескольких событий. Если функция запущена, она делает одну метку и отображает уведомление. И я хочу, чтобы он исчез автоматически через несколько секунд. Я думал, что могу использовать Timer (с помощью make timer и заставить его превратить label.visible в false), но это не сработало. Как я могу сделать это? Это мой код (не против сноски).

Private Sub Notif(message As String, critical As Integer)
    Dim notification As New Label '레이블 생성
    Me.Controls.Add(notification) '컨트롤에 추가
    notification.Text = message '텍스트 Apply
    If critical = 0 Then '일반이면
        notification.BackColor = Color.Black '블랙 적용
    Else
        notification.BackColor = Color.Red '크리티칼 하면 레드 적용
    End If
    notification.Font = New Font("HelveticaNeueLT Pro 65 Md", 12, FontStyle.Bold) '폰트 적용
    notification.Location = New Point(25, 10 + 50 * EisFuncNotiCount) '위치 적용
    notification.Size = New Point(460, 44) '크기 지정
    notification.Tag = EisFuncNotiCount
    EisFuncNotiCount = EisFuncNotiCount + 1
End Sub

Спасибо.

1 Ответ

0 голосов
/ 28 января 2020

Вы можете использовать Task.Run

Private Sub Notif(message As String, critical As Integer)
    Dim notification As New Label '레이블 생성
    Me.Controls.Add(notification) '컨트롤에 추가
    notification.Text = message '텍스트 Apply
    If critical = 0 Then '일반이면
        notification.BackColor = Color.Black '블랙 적용
    Else
        notification.BackColor = Color.Red '크리티칼 하면 레드 적용
    End If
    notification.Font = New Font("HelveticaNeueLT Pro 65 Md", 12, FontStyle.Bold) '폰트 적용
    notification.Location = New Point(25, 10 + 50 * EisFuncNotiCount) '위치 적용
    notification.Size = New Point(460, 44) '크기 지정
    notification.Tag = EisFuncNotiCount
    EisFuncNotiCount = EisFuncNotiCount + 1

    '--------------------------------
    Task.Run(Sub()
                 Task.Delay(3000).Wait() ' 3초 기다림
                 Me.Invoke(New Action(Sub() ' 크로스 스레드 오류 방지
                                          notification.Visible = False ' Visible 속성을 False로 변경
                                      End Sub))
             End Sub)
    '--------------------------------
End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...