如果文本框时间比系统时间早5分钟,我可以显示消息框吗?

时间:2019-05-01 00:25:05

标签: vb.net timer

我正在尝试为我的休息时间安排创建一个提醒系统(由于某种原因,我工作的技术公司的计划系统/ facepalm中没有该公司)

如果我在文本框中输入的休息时间与系统时间匹配,则可以使它工作。我想做的是更改它,使其在与系统时间匹配时在5分钟之前弹出一次,然后再次弹出。到目前为止,这是我按时提醒的内容:

Sub Timer1Tick(sender As Object, e As EventArgs)
DaClock.Text = Format(Now, "h:mm")

为简单起见^

If Coffee.Text = "DaClock.Text" And reminder.Checked = True Then
    Coffee.Text = (Coffee.Text + " Over")
    Coffee.Enabled  = False
    MsgBox("Break Time", MsgBoxStyle.Information, "break")
Else If Coffee.Text = DaClock.Text Then
    Coffee.Text = (Coffee.Text + " Over")
    Coffee.Enabled  = False 
End If
End Sub

我发现我无法弄清楚如何在5分钟前弹出提醒。

edit 可能不相关,但DaClock是不可见的标签

更新 我能够设置一个secont标签和一个添加了5分钟的字符串,因此该事件将提前5分钟触发,但是现在我遇到了格式问题:

        Dim MyTime As String
        MyTime = TimeOfDay.AddMinutes(5)

        D5Clock.Text = Format(MyTime, "h:mm")

但是在Label中显示的只是h:mm。如果我选择不格式化并正常显示(例如:6:30:54 PM),但是格式化对于确保触发中断条目很重要,因为我们仅在菜单中使用h:mm(例如6:30)领域。

2 个答案:

答案 0 :(得分:0)

通过同时运行两个时钟并调用每个时钟来解决这个问题,这样会提前5分钟再按时再次发生。

        D5Clock.Text = Format(TimeOfDay.AddMinutes(5), "h:mm")
        DaClock.Text = Format(TimeOfDay, "h:mm")

哪里

答案 1 :(得分:0)

虽然我可以尊重您的工作,尤其是您进步了,并且克服了自己的挑战,但我还是想提出一个替代方案(解释如下):

Public NotInheritable Class Reminder
    Private Shared _instance As Reminder

    Private Sub New()
        'hehehe Private
    End Sub

    Public Shared Function GetInstance() As Reminder
        If _instance Is Nothing Then _instance = New Reminder

        Return _instance
    End Function

    Private Async Sub RemindMe(ByVal time As DateTime)
        Dim waiting As Boolean = True

        While (waiting)
            Await Task.Delay(60000) 'This means "Check once every minute"
            If time > Now Then
                MessageBox.Show("Wake up, it's " & Now.ToShortTimeString & " !!")
                waiting = False
            End If
        End While
    End Sub

    Public Sub Dispose()
        Me.Dispose()
    End Sub
End Class

那么...这邪恶的东西到底是什么?这是Singleton。这是一个始终只有一个实例的类,这就是Sub New()私有的原因:我不希望人们能够实例化该类!除了你通过使用公共功能GetInstance(),您只能获得一个实例(只有一个实例)(如果您请求多个实例,您将始终获得第一个实例,因此请问问自己是否喜欢)。

然后,您可以要求它唤醒时间,以提醒您做某事。它跟踪您在不同线程上的提醒,因此不必担心这些会占用您所有主线程的cpu。不过,这只是一个基本代码片段,我建议您使用自定义消息等来更改它。

如果您想保持记忆愉快,请不要忘记Dispose()。无论如何,当您处置它的父对象时,它最终都会死掉,但这仍然是一个健康的习惯。

它可能会或可能不会对您有所帮助,并且如果您不是要处理的东西,也不要介意我,但是我觉得您可能会喜欢。玩得开心!