在符合标准之前,是否可以阻止表格关闭?

时间:2017-09-12 15:58:21

标签: c# winforms

所以我设置了一个时间跟踪.exe文件,它基本上将用户输入数据保存到.csv文件中。我已经为用户无法保存文件的条件设置了代码,除非满足“至少8小时”。

但是,我还想让.exe文件保持打开状态(有点像强制打开),除非用户设法保存文件。除非满足“8小时”标准,否则不应允许用户关闭程序。任何帮助,将不胜感激。 这是我的代码的一部分,从中确定标准:

  private void button1_Click(object sender, EventArgs e)
    {
        if (Convert.ToInt32(textBox28.Text) + Convert.ToInt32(textBox29.Text) + Convert.ToInt32(textBox2.Text) + Convert.ToInt32(textBox3.Text) + Convert.ToInt32(textBox4.Text) + Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox5.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox36.Text) + Convert.ToInt32(textBox40.Text) < 8)
        {
            MessageBox.Show("Total hours should be at least 8");
        }
        else
        {
            StreamWriter myOutputStream = new StreamWriter("C:\\demo\\test.csv",true);
            myOutputStream.WriteLine((dateTimePicker1.Text) + "," + (textBox47.Text) + "," + (textBox28.Text) + "," + (textBox29.Text) + "," + (textBox2.Text) + "," + (textBox3.Text) + "," + (textBox4.Text) + "," + (textBox6.Text) + "," + (textBox5.Text) + "," + (textBox7.Text) + "," + (textBox36.Text) + "," + (textBox40.Text));  
            myOutputStream.Close();


        }
    }

1 个答案:

答案 0 :(得分:1)

您可以订阅Form的{​​{3}}事件,并检查是否要取消关闭流程:

public partial class Form1 : Form
{
    private bool closeCriteriaMet;

    public Form1()
    {
        InitializeComponents();

        // subscribe event
        Closing += OnFormClosing;
    }

    // "Closing" event handler
    private void OnFormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = !closeCriteriaMet; // tell the Form not to close 
    }
}

或(建议Closing)只是覆盖OnFormClosing方法

public partial class Form1 : Form
{

    // "Closing" event handler
    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        base.OnFormClosing(e);
        e.Cancel |= !closeCriteriaMet; // combine the cancel flag 
    }
}

但请注意,这只会阻止用户通过UI关闭表单。该过程仍可通过任务管理器或其他工具终止。