所以我设置了一个时间跟踪.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();
}
}
答案 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关闭表单。该过程仍可通过任务管理器或其他工具终止。