【发布时间】:2013-11-30 15:37:32
【问题描述】:
我有一个名为“lastActivated”的 DateTime 变量,它在 Form_Activated 事件触发时设置为 DateTime.Now。目标是确保在用户从另一个屏幕单击屏幕的前 1 秒内不会发生任何事情。
DateTime? lastActivate = null; //used to determine the last time the screen was focused.
private void Form1_Activated(object sender, EventArgs e)
{
lastActivate = DateTime.Now;
}
判断是否超过1秒的代码如下
TimeSpan oneSec = new TimeSpan(0,0,1);
if (lastActivate == null || (TimeSpan)(lastActivate - DateTime.Now) > oneSec)
{
//stuff
}
上面的 if 语句总是,总是失败。即使值是:
lastActivate {11/30/2013 10:23:21 AM} System.DateTime?
now {11/30/2013 10:32:48 AM} System.DateTime
(我现在设置了一个临时值 DateTime = DateTime.Now,因此我可以将值粘贴到此处,因为我无法直接访问 DateTime.Now 的值)
有没有人对我做错了什么有什么建议,以及我应该改变什么来实现我所追求的目标?
谢谢!
【问题讨论】:
-
副业。但是时间跨度有 .TotalSeconds ,它返回总秒数。因此,您无需与“oneSec”时间跨度进行比较。
标签: c# winforms datetime comparison