C#中保存文件对话框,如果用户保存的文件名已存在,弹出对话框询问用户:“文件名已存在,是否要进行覆盖”,无论用户选择是或否,我要得到这个回应,做后续处理。我的问题是通过什么可以得到用户所做的反应?

解决方案 »

  1.   


                DialogResult result= MessageBox.Show("是否覆盖?", "确定", MessageBoxButtons.YesNo);            if (result == DialogResult.Yes)
                {
                 。
                }
                if (result == DialogResult.No)
                {
                 。。
                }
      

  2.   


    事件中自己获取
    public event CancelEventHandler FileOk
      

  3.   

    楼主的意思是不是保存文件的时候,如果已经存在该文件,则系统提出提示,是否覆盖?
    如果是这样的话,就需要设置一个属性:saveFileDialog1.OverwritePrompt = true;
      

  4.   

    貌似截取不了这个消息的结果,CancelEventHandler中也没找到相应的内容
    可以考虑在系统的保存对话框中,不做文件存在的检查,而是自己来做检查。            SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.OverwritePrompt = false;//关闭系统默认的检查            if (DialogResult.OK == saveDialog.ShowDialog())
                {
                    if (System.IO.File.Exists(saveDialog.FileName))//检查文件是否存在
                    {
                        DialogResult result = MessageBox.Show("是否覆盖?", "确定", MessageBoxButtons.YesNo);                    if (result == DialogResult.Yes)
                        {                    }
                        if (result == DialogResult.No)
                        {                    }
                    }
                }
      

  5.   

    这个估计要用API读取窗口消息吧其实你可以这样if(File.Exist(fileName))
    {
       if(MessageBox.Show("覆盖现有文件?","提示",MessageButtons.YesNo) == DaliogResult.Yes)
       {
          File.Delete(fileName);
       }
       else
       {
           //用户取消
       }
    }
      

  6.   

    对,我本来也想着自己写来得方便。
    对于这种系统提供的对话框,要截取相应的消息,就比较麻烦,这就体现了C#在这方面比VC的劣势。既然这么麻烦,C#还提供这种判断的属性有什么意义,我不能截取它,对它做任何处理,放在那边不也形同虚设吗?
      

  7.   

    呵呵 感觉这是现在很多高级语言的特点 入门容易,精通难
    就是因为.net封装了很多常用的功能,对于入门级的开发,只要直接调用就可以了,省时省力。
      

  8.   


    FileOk 当用户单击文件对话框中的“打开”或“保存”按钮时发生。 (继承自 FileDialog。) 
    当点击“打开”或“保存”时触发该事件,你可以设置一状态变量,在FileOk中置成已选择保存状态