Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使程序停止任何操作,或取消savefiledialog?_C#_Savefiledialog_Cancellation - Fatal编程技术网

C# 如何使程序停止任何操作,或取消savefiledialog?

C# 如何使程序停止任何操作,或取消savefiledialog?,c#,savefiledialog,cancellation,C#,Savefiledialog,Cancellation,我有以下几点 SaveFileDialog xmlDialog1 = new SaveFileDialog(); xmlDialog1.Filter = "XML File|*.xml"; xmlDialog1.Title = "Save a XML File"; xmlDialog1.FileName = "RhodesConfigCalc.xml"; xmlDialog1.ShowDialog(); //garante que não foi premido o cancel DialogR

我有以下几点

SaveFileDialog xmlDialog1 = new SaveFileDialog();
xmlDialog1.Filter = "XML File|*.xml";
xmlDialog1.Title = "Save a XML File";
xmlDialog1.FileName = "RhodesConfigCalc.xml";
xmlDialog1.ShowDialog();
//garante que não foi premido o cancel
DialogResult res = xmlDialog1.ShowDialog();
if (res == DialogResult.Cancel)
{
    MessageBox.Show("O ficheiro não foi gravado."); //translates into the file has not been saved
    e.Cancel = true;
}
这是一个试图修补一些错误的消息框,我希望它真的取消,而不是做前面的行动,提示

编辑:我忘了提到这是一个闭包方法

private void Form1_FormClosing(object sender, FormClosingEventArgs e) {}

Edit2:我的意思不是关闭程序,我是说“中断操作”,否则他将关闭而不保存

SaveFileDialog xmlDialog1 = new SaveFileDialog();
xmlDialog1.Filter = "XML File|*.xml";
xmlDialog1.Title = "Save a XML File";
xmlDialog1.FileName = "RhodesConfigCalc.xml";

//garante que não foi premido o cancel
DialogResult res = xmlDialog1.ShowDialog();
if (res == DialogResult.Cancel)
{
MessageBox.Show("O ficheiro não foi gravado."); //translates into the file has not been     saved
 e.Cancel = true;
}
但这是不够的,虽然res会失败,文件未保存的消息会显示,前面的一些消息是不正确的,(比如文件比较),如果这样,我必须设置一个double-else

                        if (resultadocomparacao2 == false) //IF compare fails, stops
                        { 
                            MessageBox.Show("A tabela não foi guardada correctamente.");
                            e.Cancel = true;
                        }

                        else if (res == DialogResult.Cancel) //If save is canceled, stops
                        {
                            MessageBox.Show("O ficheiro não foi gravado."); //translates into the file has not been saved
                            e.Cancel = true;
                        }
                        else if (resultadocomparacao2 == true) //if compare gets his job done (Sucess)
                        {
                            MessageBox.Show("A tabela foi guardada com sucesso.");
                        }
我必须在同一个if中包含所有3个测试
希望有帮助

我不太清楚你在问什么。另外,为什么要调用
ShowDialog
两次?你的意思是?不,对不起,我的意思是没有完成程序,否则他将在不保存的情况下关闭。你似乎想显示保存文件对话框,然后检查用户是否真的保存了文件或取消了对话框。您已经在这里完成了:
DialogResult=xmlDialog1.ShowDialog()。那么,只需删除对
ShowDialog()
的第一个调用如何?我这样做是因为第一个调用用于显示对话框,另一个调用用于将结果存储在“res”中。。在这方面我真是个乞丐:(