MXD保存
1 private void btnSaveMap_Click(object sender, EventArgs e) 2 { 3 try 4 { 5 string sMxdFileName = mainMapControl.DocumentFilename;//获取文件名 6 IMapDocument pMapDocument = new MapDocument(); 7 if(sMxdFileName!=null&&mainMapControl.CheckMxFile(sMxdFileName)) 8 { 9 if(pMapDocument.get_IsReadOnly(sMxdFileName)) 10 { 11 MessageBox.Show("该文档制度","Warning"); 12 pMapDocument.Close(); 13 return; 14 } 15 else 16 { 17 SaveFileDialog pSaveFileDialog=new SaveFileDialog(); 18 pSaveFileDialog.Title="请选择保存路径"; 19 pSaveFileDialog.OverwritePrompt=true;//获取一个布尔类型值,用来提示当存在文件名时,SaveAs对话框是否显示警告 20 pSaveFileDialog.Filter="Mxd文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|.mxt"; 21 pSaveFileDialog.RestoreDirectory=true;//获取一个布尔类型值,用来指示对话框再关闭前是否还原当前目录 22 if(pSaveFileDialog.ShowDialog()==DialogResult.OK) 23 { 24 sMxdFileName =pSaveFileDialog.FileName;//将文件名赋值给sMxdfileName; 25 } 26 else 27 { 28 return; 29 } 30 } 31 pMapDocument.New(sMxdFileName);//创建并打开一个以sMxdFileName为文件名的mxd文档 32 pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);//利用IMxdContents读取地图文档内容,并使之替换IMapDocment借口的实例对象 33 pMapDocument.Save(true,true); 34 pMapDocument.Close(); 35 MessageBox.Show("地图文档保存成功","提示"); 36 } 37 } 38 catch (Exception ex) 39 { 40 MessageBox.Show(ex.Message); 41 } 42 }
MXD另存
1 private void btnSaveAsMap_Click(object sender, EventArgs e) 2 { 3 try 4 { 5 SaveFileDialog pSfd = new SaveFileDialog(); 6 pSfd.Title = "另存为"; 7 pSfd.OverwritePrompt = true; 8 pSfd.Filter = "Mxd文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|.mxt"; 9 pSfd.RestoreDirectory = true; 10 if (pSfd.ShowDialog() == DialogResult.OK) 11 { 12 string sFilePath = pSfd.FileName; 13 IMapDocument pMapDoc = new MapDocumentClass(); 14 pMapDoc.New(sFilePath);////创建并打开一个以sFilePath为文件名的mxd文档 15 pMapDoc.ReplaceContents(mainMapControl.Map as IMxdContents);//利用IMxdContents读取地图文档内容,并使之替换IMapDocment借口的实例对象 16 pMapDoc.Save(true, true); ; 17 pMapDoc.Close(); 18 } 19 } 20 catch (Exception ex) 21 { 22 MessageBox.Show(ex.Message); 23 } 24 }
总结:
文档的保存和另存用到的接口是ImapDocument,二者本质上没有区别,都需要在保存前判断文件是否存在即可。
时间: 2024-10-11 20:01:55