Vb.net 在用户定义的时间上显示me.show()

Vb.net 在用户定义的时间上显示me.show(),vb.net,timer,Vb.net,Timer,我正在创建一个在后台运行的程序,但是有机会选择程序应该再次出现在屏幕上的时间。我不知道如何做到这一点,但我假设在我的计时器中有一个简单的“如果”是可能的 这是我脑海中的代码(wich显然不起作用) 谢谢:)啊,只是个小问题,如果有人在逻辑思维方面遇到同样的问题,我会添加我的解决方案:) 有几个明显的错误。首先,将DateTime与If语句中的字符串进行比较,并让运行时处理转换。您应该显式地进行转换。事实上,您应该配置应用程序,以便启用Option Strict和Option Explicit。这

我正在创建一个在后台运行的程序,但是有机会选择程序应该再次出现在屏幕上的时间。我不知道如何做到这一点,但我假设在我的计时器中有一个简单的“如果”是可能的

这是我脑海中的代码(wich显然不起作用)


谢谢:)

啊,只是个小问题,如果有人在逻辑思维方面遇到同样的问题,我会添加我的解决方案:)


有几个明显的错误。首先,将DateTime与If语句中的字符串进行比较,并让运行时处理转换。您应该显式地进行转换。事实上,您应该配置应用程序,以便启用Option Strict和Option Explicit。这大大减少了可能出现的问题的数量

第二,比较DateTime值和DateTime。现在最好使用不等式,因为它的分辨率只有几分之一秒。如果在时间相等的情况下使用if语句,那绝对是一种侥幸

    Dim time As DateTime = DateTime.Now
    Dim format As String = "HH:mm"
    Label10.Text = (time.ToString(format))
    Dim ShowTime As DateTime
    If DateTime.TryParse(Textbox1.Text, ShowTime) Then
        If DateTime.Now() > ShowTime Then
            Me.Show()
        End If
    End If

另外,混合使用DateTime和DateAndTime是否有具体原因?DateAndTime旨在简化将旧的VB6代码转换为VB.NET的过程。你应该开始练习在新代码中使用DateTime。

我认为你可以通过使用
DateTime的重载
ToString
来大大简化代码。现在使用
方法并将其与文本框进行比较

这假设在文本框中输入的时间为HH:mm格式:

    If DateTime.Now.ToString("HH:mm") = TextBox1.Text Then
        Timer1.Enabled = False
        MessageBox.Show("Stop")
    End If
但是,如果希望用户输入日期或时间,则应该使用DateTimePicker控件。这使得比较不那么模棱两可,因为您不必将日期转换为字符串的特殊格式:

If (DateTime.Now.Hour = DateTimePicker1.Value.Hour) AndAlso 
   (DateTime.Now.Minute = DateTimePicker1.Value.Minute) Then
      Timer1.Enabled = False
      MessageBox.Show("Stop")
End If

您需要一个
DateTime
变量来表示
popupTime
,然后在计时器事件中,当当前时间>=该时间时,禁用计时器并显示表单计时器在显示表单之前可能也应该禁用计时器,但是是的+1它比我自己的解决方案更优雅,我正在偷取这个,谢谢:)!
    If DateTime.Now.ToString("HH:mm") = TextBox1.Text Then
        Timer1.Enabled = False
        MessageBox.Show("Stop")
    End If
If (DateTime.Now.Hour = DateTimePicker1.Value.Hour) AndAlso 
   (DateTime.Now.Minute = DateTimePicker1.Value.Minute) Then
      Timer1.Enabled = False
      MessageBox.Show("Stop")
End If