2008-12-15 91 views
0
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); 

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

+1

根据定义,“结果”告诉你当对话框关闭时发生了什么事件。如果您尝试注入“确定”,您会看到相同的行为。 – GalacticCowboy 2008-12-16 00:05:48

+0

保持SaveFileDialog可见的令人信服的理由是什么?这是平台的非典型行为,我希望它会让用户感到困惑。如果您确认覆盖,则通过SaveFileDialog本身的属性完成。 – 2008-12-16 00:28:58

回答

4

如果需要对文件保存对话取消消息框的原因是因为你关闭下来未保存的更改,那么我建议把在一个循环中调用File Save对话框,该循环一直持续到一个标志被设置为停止循环,并且如果结果没有变好,则调用消息框。例如:

// 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应用程序的方式一致的行为,你让用户是否有另一个去在保存文件(S)他无意中在File Save对话框中点击Cancel。

1

你不能这样做,SaveFileDialog类。

1

我将不得不第二个lubos。无法使用SaveFileDialog类完成。

你基本上想要做的就是在SaveFileDialog上捕获一个特定的按钮点击事件,这个事件类不提供给你。一个解决方案,如果你真的想要这种功能将是推出自己的保存对话框,所以你可以处理每个按钮点击你自己的方式。

1

就我所知,使用SaveFileDialog无法完成纯净.Net所需的操作。如果你出去使用Windows并听取实际的Windows消息并响应单击事件消息等,则可以完成此操作。我宁愿避免这样做。

您可能会寻找第三方对话框类,或编写自己的对话框。

0

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

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; 
    } 
0

顺便说一句,有一个更有效的方式来显示和检查对话框。像这样:

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

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