一个新的消息框出现后每秒出现一次

问题描述

我遇到了一个问题,我尝试在倒计时到达一定时间后尝试显示一个显示框,但是由于某种奇怪的原因,尽管它已经超过了它应该出现的初始时间,但它却每秒复制一次。这是我尝试执行的操作,但是现在计时器已停止并且剩余时间列已停止响起。

 public partial class Form1 : Form
{
    private List<CSession> sessionlist = new List<CSession>();
    private TimeSpan workingTimeSpan = new TimeSpan();
    private TimeSpan fiveMinutes = new TimeSpan(0,1,0);
    private TimeSpan oneSecond = new TimeSpan(0,1);
    public Form1()
    {
        InitializeComponent();
        timer1.Enabled = true;
        timer1.Start();
    }


    private void label1_Click(object sender,EventArgs e)
    {

    }

    private void AddTime_Click(object sender,EventArgs e)
    {
        
        workingTimeSpan += fiveMinutes;

        DisplayWorkingTimeSpan();
    }

    private void DisplayWorkingTimeSpan()
    {
        TimerLabel.Text = workingTimeSpan.ToString();
    }

    private void DecreaseTime_Click(object sender,EventArgs e)
    {
        TimeSpan fiveMinutes = new TimeSpan(0,5,0);
        workingTimeSpan -= fiveMinutes;

        DisplayWorkingTimeSpan();
    }

    private void Confirm_Click(object sender,EventArgs e)
    {
        CSession newSession = new CSession();

        if(PasswordText.Text == "")
        {
            MessageBox.Show("Password not entered");
            return;
        }

        newSession.password = PasswordText.Text;
        newSession.purchased_time = workingTimeSpan;
        newSession.remaining_time = workingTimeSpan;
        newSession.status = "Online";

        sessionlist.Add(newSession);
        PasswordText.Text = "";
        TimerLabel.Text = "";
        workingTimeSpan = new TimeSpan();
    }

    private void DisplayAllSessions()
    {
        listView1.Items.Clear();

        foreach(CSession c in sessionlist)
        {
            string[] row = { c.password,c.purchased_time.ToString(),c.remaining_time.ToString(),c.status };
            ListViewItem i = new ListViewItem(row);
            listView1.Items.Add(i);
        }
    }
    private void timer1_Tick(object sender,EventArgs e)
    {
        foreach(CSession c in sessionlist)
        {
            if (c.remaining_time.TotalMinutes == 5)
            {
                timer1.Stop();
                MessageBox.Show("Time almost up for client.");
                
            }

            if (c.remaining_time.TotalSeconds < 1)
            {
                c.status = "Offline";
            }
           
            if(c.status == "Online")
            {
               c.remaining_time -= oneSecond;
            }

        }

        DisplayAllSessions();
    }

    private void exitToolStripMenuItem_Click(object sender,EventArgs e)
    {
        Close();
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)