如果文本在X分钟内没有保存,并且用户想要关闭应用程序,我如何发送消息框?

本文关键字:应用程序 消息 何发送 分钟 文本 如果 保存 用户 | 更新日期: 2023-09-27 18:15:44

伪代码:

  private void ForgetSave()
{    
   if (the SaveRegularly method hasn't been used within 3 mins)
      MessageBox.Show("Would you like to save any changes before closing?")
  ......... the code continues.
}  
   else
{  
    this.close();
}

有人知道if语句的第一行怎么写吗?

如果文本在X分钟内没有保存,并且用户想要关闭应用程序,我如何发送消息框?

只需记住上次保存时间是什么时候:

private const TimeSpan saveTimeBeforeWarning = new TimeSpan(0,1,0); //1 minute 
private static DateTime _lastSave = DateTime.Now;

   private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if ((DateTime.Now - _lastSave) > saveTimeBeforeWarning)
    {
        if(MessageBox.Show("Would you like to save any changes before closing?") == DialogResult.Yes);
        {
             Save();
        }
    }
}
private void Save()
{
    //save data
    _lastSave = DateTime.Now
}

正如Ahmed建议的那样,您可以使用计时器和标志来知道何时必须显示消息,我给您留下了一段代码来让您开始

    private const int SAVE_TIME_INTERVAL = 3 * 60 * 1000;
    private bool iWasSavedInTheLastInterval = true;
    private System.Windows.Forms.Timer timer;
    public Form1()
    {
        InitializeComponent();
        //Initialize the timer to your desired waiting interval
        timer = new System.Windows.Forms.Timer();
        timer.Interval = SAVE_TIME_INTERVAL;
        timer.Tick += Timer_Tick;
        timer.Start();
    }
    private void Timer_Tick(object sender, EventArgs e)
    {
        //If the timer counts that amount of time we haven't saved in that period of time
        iWasSavedInTheLastInterval = false;
    }
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (iWasSavedInTheLastInterval == false)
        {
            MessageBox.Show("Would you like to save any changes before closing?");
        }
    }
    private void btnSave_Click(object sender, EventArgs e)
    {
        //If a manual save comes in then we restart the timer and set the flag to true
        iWasSavedInTheLastInterval = true;
        timer.Stop();
        timer.Start();
    }