简体   繁体   English

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

[英]How can I send a message box if text hasn't been saved within X mins and the user wants to close the app?

Here's the pseudo code: 这是伪代码:

  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();
}

Does anybody know how to write the first line of the if statement? 有人知道如何编写if语句的第一行吗?

Simply remember when the last save time was: 只需记住最后一次保存时间是:

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
}

As Ahmed suggested you can use a timer and a flag to know when you have to display the message, I left you a piece of code to get you started 正如艾哈迈德(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();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM