关于C#窗体应用程序文件保存和文件另存为的代码,我这里是做ArcGisEngine地图开发的,所以以保存地图文件为例。针对保存不同的文件,可以对代码进行些许修改,下面直接贴代码了,有相关注释。
/// <summary>
/// 保存文件
/// </summary>
/// <param name="axMapControl1">地图控件</param>
public static void SaveMap(AxMapControl axMapControl1)
{
try
{
string MxdFileName = axMapControl1.DocumentFilename; //获取地图对象文件的名字
IMapDocument MapDocument = new MapDocumentClass(); //这里是实例化地图文件的对象
if (MxdFileName != null && axMapControl1.CheckMxFile(MxdFileName)) //判断文件名是否为空和校验文件名是否为true
{
if (MapDocument.get_IsReadOnly(MxdFileName)) //文件是否为只读
{
MessageBox.Show("地图文件为只读,不能保存");
MapDocument.Close(); //关闭地图文档
return;
}
}
else //如果一开始打开文件为空或损坏则提示保存新的路径
{
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Title = "请选择保存文件路径";
saveFile.Filter = "ArcMap文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt";
saveFile.OverwritePrompt = true; //是否覆盖当前文件
saveFile.RestoreDirectory = true; //还原目录
if (saveFile.ShowDialog() == DialogResult.OK)
{
MxdFileName = saveFile.FileName;
}
else
{
return;
}
}
MapDocument.New(MxdFileName); //地图元素新文档名
MapDocument.ReplaceContents(axMapControl1.Map as IMxdContents); //替换内容
MapDocument.Save(MapDocument.UsesRelativePaths, true); //保存文件为相对路径
MapDocument.Close();
MessageBox.Show("保存文档成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
/// <summary>
/// 文件另存为
/// </summary>
/// <param name="axMapControl1">地图控件</param>
public static void SaveAsMap(AxMapControl axMapControl1)
{
try
{
string MxdFileName = axMapControl1.DocumentFilename; //获取地图控件文件名
IMapDocument MapDocument = new MapDocumentClass();
SaveFileDialog saveFile = new SaveFileDialog(); //实例化保存文件对话框对象
saveFile.Title = "请选择保存文件路径";
saveFile.Filter = "ArcMap文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt";
saveFile.OverwritePrompt = true; //是否覆盖当前文件
saveFile.RestoreDirectory = true; //还原目录
if (saveFile.ShowDialog() == DialogResult.OK)
{
MxdFileName = saveFile.FileName;
MapDocument.New(MxdFileName); //地图元素新文档名
MapDocument.ReplaceContents(axMapControl1.Map as IMxdContents); //替换内容
MapDocument.Save(MapDocument.UsesRelativePaths, true); //保存文件为相对路径
MapDocument.Close();
MessageBox.Show("另存文档成功");
}
else
{
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}