在C#中的“保存”对话框中显示消息框

时间:2008-12-15 23:54:49

标签: c# winforms

SaveFileDialog savefileDialog1 = new SaveFileDialog();
DialogResult result  = savefileDialog1.ShowDialog();
switch(result == DialogResult.OK)
    case true:
        //do something
    case false:
        MessageBox.Show("are you sure?","",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

如何在“保存”对话框中单击“取消”后在保存对话框中显示消息框,即背景中应存在“保存对话框”。

7 个答案:

答案 0 :(得分:4)

如果在“取消文件保存”对话框中需要消息框的原因是因为您使用未保存的更改关闭了内容,​​那么我建议将调用文件保存对话框放在循环中,直到标记为止如果结果不正常,则设置为停止循环并调用消息框。例如:

// lead-up code

SaveFileDialog sft = new SaveFileDialog();
BOOL bDone;
do
{
  if (DialogResult.OK == sft.ShowDialog())
    bDone = true;
  else
  {
    DialogResult result = MessageBox.Show("Are you sure you don't want to save the changed file?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    bDone = (result == Yes) ? true : false;
  }
} while (!bDone);

// carry on

这样,文件保存对话框的行为与Windows应用程序中的其他方式一致,如果他意外地让用户再次保存文件在文件保存对话框中点击取消。

答案 1 :(得分:1)

你不能用SaveFileDialog类来做到这一点。

答案 2 :(得分:1)

我将不得不第二次润滑。无法使用SaveFileDialog类完成。

您基本上想要做的是捕获SaveFileDialog上的特定按钮单击事件,该事件是该类无法使用的。如果您真的想要这种功能,那么解决方案就是滚动您自己的保存对话框,以便您可以按照自己的方式处理每个按钮。

答案 3 :(得分:1)

据我所知,使用SaveFileDialog无法在纯.Net中完成您想要的任务。如果你去Windows并听取实际的Windows消息并回复点击事件消息等,你可以完成它。我宁愿避免这样做。

您可能会寻找第三方对话课程,或自己编写。

答案 4 :(得分:0)

制作一个用于与文件系统进行互操作的用户界面的程序与大多数其他Windows程序的工作方式不同,通常不是一个好主意。这就是为什么没有简单的方法来做到这一点。

答案 5 :(得分:0)

您可以通过一些修改来实现:

    private void Form1_Load(object sender, EventArgs e)
    {
        DialogResult result = showDialog();
        if (result == DialogResult.OK)
        {
            //Ok
        }
        else
        {
            DialogResult r = MessageBox.Show("Are you sure?", "Sure?", MessageBoxButtons.YesNo);
            if(r.ToString()=="No")
            {
                showDialog();
            }
        }
    }

    public DialogResult showDialog()
    {
        SaveFileDialog savefileDialog1 = new SaveFileDialog();
        DialogResult result = savefileDialog1.ShowDialog();
        return result;
    }

答案 6 :(得分:0)

顺便说一下,有一种更有效的方式来显示和检查Dialog。像这样:

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

if( saveFileDialog1.ShowDialog() == DialogResult.OK )
{
   // Code here...
} else Application.DoEvents();