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

时间:2014-04-23 07:04:11

标签: 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
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:由此我不是说关闭程序,我的意思是"打破行动"否则他将关闭而不保存

1 个答案:

答案 0 :(得分:0)

我更正了删除第一个showdialog

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会失败并且文件未保存的消息会显示,前面的一些消息不正确,(比如文件比较),如果像这样我必须设置一个其他的

                        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个测试 希望它有所帮助