form1 中的计时器,当实时时间等于字符串文本框时启动 Form2

问题描述 投票:0回答:1

我有一个工作代码:form1,带有启动form2然后关闭form1的计时器,我的问题是计时器启动form2两次,任何帮助如何避免这么多谢谢,我的代码:

private void TimerCount_Tick(object sender, EventArgs e)
{
    String FajrCount = LblTime10.Text;
    String RealTime = DateTime.Now.ToString("HH:mm");
    if (FajrCount == RealTime)
    {
        TimerCount.Stop();
        new FrmCountDfajr().ShowDialog();
        TimerCount.Start(); >>>>>>> need to restart TimerCount for next day
    }
}
c# forms timer
1个回答
0
投票

我同意 Olivier Jacot-Decombes 的观点,您应该以不同的方式处理间隔,或者您可以使用

TimeSpan
计算“目标时间”并检查当前时间是否等于或超过该时间。然后您只需添加一天即可为下一个目标设置。

你绝对应该重新设计你的算法......

这是一个非常丑陋的解决方案......但您可以简单地检查表单是否已经打开:

if (FajrCount == RealTime)
{
    TimerCount.Stop();

    if (Application.OpenForms.OfType<FrmCountDfajr>().Count() == 0)
    {
        new FrmCountDfajr().ShowDialog();
    }

    TimerCount.Start(); 
}  
© www.soinside.com 2019 - 2024. All rights reserved.