C#在timer_Tick中时间比较不能触发代码

发布于 2021-11-28 23:51:45 字数 5388 浏览 743 评论 2

代码中的if语句无法触发

 private void timer2_Tick(object sender, EventArgs e)
        {
            //提前5中提醒,5分钟后强制关机
            DateTime test = DateTime.Now.AddMinutes(5);
            TimeSpan subTime_T = test - myVar.dtVar;
            TimeSpan subTime_N = DateTime.Now - myVar.dtVar;
            if (subTime_T.Hours==0&&subTime_T.Minutes==0)
            {
                this.Visible = true;
                this.WindowState = FormWindowState.Normal;
                this.Show();
                this.notifyIcon1.Visible = false;
                MessageBox.Show("还有10分钟关机", "时间提醒", MessageBoxButtons.OK);
                label1.Text = myVar.dtVar.ToLongTimeString();
            }
           // label1.Text = myVar.dtVar.ToLongTimeString();
        
            //计时完成,关机
            if (subTime_N.Hours==0&&subTime_N.Minutes==0)
            {
                label1.Text = myVar.dtVar.ToLongTimeString();
                DoExitWin(EWX_SHUTDOWN);
            }
        }

        private void notifyIcon1_MouseClick_1(object sender, MouseEventArgs e)
        {
            this.timer1.Enabled = true;
            this.Visible = true;
            this.WindowState = FormWindowState.Normal;
            this.Show();
            this.notifyIcon1.Visible = false;
        }

这是myVar的定义

public Form1()
        {
            InitializeComponent();
            //启动定时器,实现时间实时更新
            this.timer1.Interval = 1000;
            this.timer1.Start();

            //设置默认时间设定
            setMin.SelectedIndex = 0;
            setHour.SelectedIndex = 3;
        }

        public class myVar
        {
            public static DateTime dtVar=DateTime.Parse("0:00:00");
            public static int z = 0;
        }

 

这是myVar的赋值

public void setMin_SelectedIndexChanged(object sender, EventArgs e)
        {
            //获取用户时间设定
            string setMinute=setMin.SelectedItem.ToString();
            int setMinuteInt=int.Parse(setMinute);
           
            //根据用户设定建立提醒时间
            DateTime myTimer =new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,myVar.dtVar.Hour,myVar.dtVar.Minute,0).AddMinutes(setMinuteInt);
            myVar.dtVar = myTimer;
        }

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

德意的啸 2021-11-30 14:32:06

请确定System.Window.Forms.Timer的Enable属性为true,并且System.Window.Forms.Timer是单线程定时器,在多线程中不便于使用,可以考虑用System.Timers.Timer或者System.Threading.Timer。

刘备忘录 2021-11-29 02:07:35

代码太长,看不过来

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文