/// <summary> /// 保存文件 /// </summary> /// <param name="newFileName">使用新文件名</param> /// <param name="args">事件参数</param> /// <returns>操作是否成功</returns> public virtual bool SaveDocument(bool newFileName, WriterCommandEventArgs args) { string fileName = args.Document.FileName; IFileSystem fs = args.Host.FileSystems.Docuemnt; if (args.Parameter is string) { if (newFileName == false) { fileName = (string)args.Parameter; } } else if (args.Parameter is System.IO.Stream) { System.IO.Stream stream2 = (System.IO.Stream)args.Parameter; args.Document.Save(stream2, FileFormat.XML); return(true); } else if (args.Parameter is System.IO.TextWriter) { System.IO.TextWriter writer = (System.IO.TextWriter)args.Parameter; args.Document.Save(writer, FileFormat.XML); return(true); } if (args.ShowUI) { if (fileName == null || fileName.Trim().Length == 0 || newFileName) { fileName = fs.BrowseSave(args.Host.Services, fileName); if (string.IsNullOrEmpty(fileName)) { return(false); } } }//if if (fileName == null || fileName.Trim().Length == 0) { return(false); } VFileInfo info = fs.GetFileInfo(args.Host.Services, fileName); FileFormat format = WriterUtils.ParseFileFormat(info.Format); System.IO.Stream stream = fs.Save(args.Host.Services, fileName); if (stream != null) { using (stream) { args.Document.Save(stream, format); } return(true); } else { // 未能打开文件,保存失败。 return(false); } }