如何使用日期时间选取器在 Visual Studio 中创建倒数计时器

本文关键字:Studio 创建 倒数 计时器 Visual 日期 何使用 时间 选取 | 更新日期: 2023-09-27 18:32:56

这对你们中的一些人来说可能听起来很愚蠢,但请耐心等待。我正在尝试创建一个具有 2 个日期时间选择器控件的 Windows 表单应用程序。它们旨在设置时间范围(日期选择已被禁用)。在用户设置范围并点击确认按钮后,程序需要显示"A"直到达到限制并达到,当计时器到期时,显示"B"。这是我现在在确认按钮的点击事件中的代码

int a=0;
TimeSpan time = DateTime.Now.TimeOfDay;            
TimeSpan timer = dateTimePicker2.Value - dateTimePicker1.Value;
MessageBox.Show("Timer set. Device will shutdown in " + timer);
timer = timer + time;            
while (time!=timer)
{
    time = DateTime.Now.TimeOfDay; ;
    if(a==0)
    {
        MessageBox.Show("B");
        a = 1;
    };               
};
if (a == 1)
{
    MessageBox.Show("A");
    a = 0;
}

这段代码背后的逻辑是这样的:首先找到两个时间范围之间的差异。然后将此差值添加到当前系统时间,并执行 while 循环以检查该时间是否已到达。如果不显示 B。当当前系统时间到达该时间时,显示 A。我为此花费了几个小时,无法让它工作。运行此代码时,它只显示 B 而不是 A。我是Visual Studio的新手,这是我的第一个项目。

如何使用日期时间选取器在 Visual Studio 中创建倒数计时器

问题很可能是这个测试:

while (time!=timer)

当前时间很可能永远不会完全等于您选择的第二次时间。您应该将其更改为:

while (time < endTime)

有了这个,您将能够摆脱变量a并在循环完成后仅显示"A"。

说了这么多,MessageBox.Show会阻塞循环,直到你关闭它,所以你真的需要找到一些其他方法来表明你仍然在循环中。