using System;
using System.IO;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.SystemUI;
namespace MapOperation
{
public partial class FormMain : Form
{
#region变量定义
//地图导出窗体
private FormExportMap frmExpMap = null;
//长度、面积量算
private FormMeasureResult frmMeasureResult = null; //量算结果窗体
private INewLineFeedback pNewLineFeedback; //追踪线对象
private INewPolygonFeedback pNewPolygonFeedback; //追踪面对象
private IPoint pPointPt = null; //鼠标点击点
private IPoint pMovePt = null; //鼠标移动时的当前点
private double dToltalLength = 0; //量测总长度
private double dSegmentLength = 0; //片段距离
private IPointCollection pAreaPointCol = new MultipointClass() ;
//面积量算时画的点进行存储;
private string sMapUnits = "未知单位"; //地图单位变量
private object missing = Type.Missing;
//TOC菜单
IFeatureLayer pTocFeatureLayer = null; //点击的要素图层
private FormAtrribute frmAttribute = null; //图层属性窗体
private ILayer pMoveLayer; //需要调整显示顺序的图层
private int toIndex; //存放拖动图层移动到的索引号
//鹰眼同步
private bool bCanDrag; //鹰眼地图上的矩形框可移动的标志
private IPoint pMoveRectPoint; //记录在移动鹰眼地图上的矩形框时鼠标的位置
private IEnvelope pEnv; //记录数据视图的Extent
#endregion
#region初始化
public FormMain()
{
InitializeComponent();
axTOCControl.SetBuddyControl(mainMapControl);
EagleEyeMapControl.Extent = mainMapControl.FullExtent; pEnv = EagleEyeMapControl.Extent;
DrawRectangle(pEnv);
}
#endregion
#region数据加载
#region LoadMxFile方法加载地图文档文件
private void btnLoadMxFile_Click(object sender, EventArgs e) {
//加载数据前如果有数据则清空
try
{
OpenFileDialog pOpenFileDialog = new OpenFileDialog(); pOpenFileDialog.CheckFileExists = true;
pOpenFileDialog.Title = "打开地图文档";
pOpenFileDialog.Filter = "ArcMap文档
(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|*.mxt|发布地图文件(*.pmf)|*.pmf|所有地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";
pOpenFileDialog.Multiselect = false; //不允许多个文件同时选择
pOpenFileDialog.RestoreDirectory = true; //存储打开的文件路径
if (pOpenFileDialog.ShowDialog() == DialogResult.OK) {
string pFileName = pOpenFileDialog.FileName;
if (pFileName == "")
{
return;
}
if (mainMapControl.CheckMxFile(pFileName)) //检查地图文档有效性
{
ClearAllData();
mainMapControl.LoadMxFile(pFileName);
}
else
{
MessageBox.Show(pFileName + "是无效的地图文
档!", "信息提示");
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show("打开地图文档失败" + ex.Message);
}
}
#endregion
#region IMapDocument方法加载Mxd文档文件
private void btnIMapDocument_Click(object sender, EventArgs e) {
try
{
OpenFileDialog pOpenFileDialog = new OpenFileDialog(); pOpenFileDialog.CheckFileExists = true;
pOpenFileDialog.Title = "打开地图文档";
pOpenFileDialog.Filter = "ArcMap文档
(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|*.mxt|发布地图文件(*.pmf)|*.pmf|所有地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";
pOpenFileDialog.Multiselect = false;
pOpenFileDialog.RestoreDirectory = true;
if (pOpenFileDialog.ShowDialog() == DialogResult.OK) {
string pFileName = pOpenFileDialog.FileName;
if (pFileName == "")
{
return;
}
if (mainMapControl.CheckMxFile(pFileName)) //检查地图文档有效性
{
//将数据载入pMapDocument并与Map控件关联
IMapDocument pMapDocument = new
MapDocument();//using ESRI.ArcGIS.Carto;
pMapDocument.Open(pFileName, "");
//获取Map中激活的地图文档
mainMapControl.Map =
pMapDocument.ActiveView.FocusMap;
mainMapControl.ActiveView.Refresh();
}
else
{
MessageBox.Show(pFileName + "是无效的地图文
档!", "信息提示");
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show("打开地图文档失败" + ex.Message);
}
}
#endregion
#region ControlsOpenDocCommandClass加载地图
private void btncontrolsOpenDocCommandClass_Click(object sender, EventArgs e)
{
ICommand command = new ControlsOpenDocCommandClass();
command.OnCreate(mainMapControl.Object);
command.OnClick();
}
#endregion
#region加载Shape文件
private void btnAddShapefile_Click(object sender, EventArgs e) {
//ClearAllData();
try
{
OpenFileDialog pOpenFileDialog = new OpenFileDialog(); pOpenFileDialog.CheckFileExists = true;
pOpenFileDialog.Title = "打开Shape文件";
pOpenFileDialog.Filter = "Shape文件(*.shp)|*.shp"; pOpenFileDialog.ShowDialog();
////获取文件路径
//FileInfo pFileInfo = new
FileInfo(pOpenFileDialog.FileName);
//string pPath = pOpenFileDialog.FileName.Substring(0, pOpenFileDialog.FileName.Length - https://www.sodocs.net/doc/fd10733482.html,.Length);
//mainMapControl.AddShapeFile(pPath, https://www.sodocs.net/doc/fd10733482.html,);
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
string pFullPath = pOpenFileDialog.FileName;
if (pFullPath == "") return;
int pIndex = https://www.sodocs.net/doc/fd10733482.html,stIndexOf("\\");
string pFilePath = pFullPath.Substring(0, pIndex); //文件路径
string pFileName = pFullPath.Substring(pIndex + 1); //文件名
//实例化ShapefileWorkspaceFactory工作空间,打开Shape 文件
pWorkspaceFactory = new ShapefileWorkspaceFactory(); pFeatureWorkspace =
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
//创建并实例化要素集
IFeatureClass pFeatureClass =
pFeatureWorkspace.OpenFeatureClass(pFileName);
pFeatureLayer = new FeatureLayer();
pFeatureLayer.FeatureClass = pFeatureClass;
https://www.sodocs.net/doc/fd10733482.html, =
pFeatureLayer.FeatureClass.AliasName;
ClearAllData(); //新增删除数据
mainMapControl.Map.AddLayer(pFeatureLayer);
mainMapControl.ActiveView.Refresh();
//同步鹰眼
SynchronizeEagleEye();
}
catch (Exception ex)
{
MessageBox.Show("图层加载失败!" + ex.Message);
}
}
#endregion
#region加载栅格文件
private void btnAddRaster_Click(object sender, EventArgs e) {
OpenFileDialog pOpenFileDialog = new OpenFileDialog(); pOpenFileDialog.CheckFileExists = true;
pOpenFileDialog.Title = "打开Raster文件";
pOpenFileDialog.Filter = "栅格文件
(*.*)|*.bmp;*.tif;*.jpg;*.img|(*.bmp)|*.bmp|(*.tif)|*.tif|(*.jpg)|*.j pg|(*.img)|*.img";
pOpenFileDialog.ShowDialog();
string pRasterFileName = pOpenFileDialog.FileName;
if (pRasterFileName == "")
{
return;
}
string pPath =
System.IO.Path.GetDirectoryName(pRasterFileName);
string pFileName =
System.IO.Path.GetFileName(pRasterFileName);
IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactory();
IWorkspace pWorkspace =
pWorkspaceFactory.OpenFromFile(pPath, 0);
IRasterWorkspace pRasterWorkspace = pWorkspace as IRasterWorkspace;
IRasterDataset pRasterDataset =
pRasterWorkspace.OpenRasterDataset(pFileName);
//影像金字塔判断与创建
IRasterPyramid3 pRasPyrmid;
pRasPyrmid = pRasterDataset as IRasterPyramid3;
if (pRasPyrmid != null)
{
if (!(pRasPyrmid.Present))
{
pRasPyrmid.Create(); //创建金字塔
}
}
IRaster pRaster;
pRaster = pRasterDataset.CreateDefaultRaster();
IRasterLayer pRasterLayer;
pRasterLayer = new RasterLayerClass();
pRasterLayer.CreateFromRaster(pRaster);
ILayer pLayer = pRasterLayer as ILayer;
mainMapControl.AddLayer(pLayer, 0);
}
#endregion
#region分图层加载CAD数据
private void btnAddCADByLayer_Click(object sender, EventArgs e) {
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureClass pFeatureClass;
OpenFileDialog pOpenFileDialog = new OpenFileDialog();
pOpenFileDialog.Filter = "CAD(*.dwg)|*.dwg";
pOpenFileDialog.Title = "打开CAD数据文件";
pOpenFileDialog.ShowDialog();
string pFullPath = pOpenFileDialog.FileName;
if (pFullPath == "")
{
return;
}
//获取文件名和文件路径
int pIndex = https://www.sodocs.net/doc/fd10733482.html,stIndexOf("\\");
string pFilePath = pFullPath.Substring(0, pIndex);
string pFileName = pFullPath.Substring(pIndex + 1);
pWorkspaceFactory = new CadWorkspaceFactory();
pFeatureWorkspace =
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
//加载CAD文件中的线文件
pFeatureClass =
pFeatureWorkspace.OpenFeatureClass(pFileName + ":polyline");
pFeatureLayer = new FeatureLayerClass();
https://www.sodocs.net/doc/fd10733482.html, = pFileName;
pFeatureLayer.FeatureClass = pFeatureClass;
ClearAllData(); //新增删除数据
mainMapControl.Map.AddLayer(pFeatureLayer);
mainMapControl.ActiveView.Refresh();
//同步鹰眼
SynchronizeEagleEye();
}
#endregion
#region加载整幅CAD图数据
private void btnAddWholeCAD_Click(object sender, EventArgs e) {
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
OpenFileDialog pOpenFileDialog = new OpenFileDialog();
pOpenFileDialog.Filter = "CAD(*.dwg)|*.dwg";
pOpenFileDialog.Title = "打开CAD数据文件";
pOpenFileDialog.ShowDialog();
string pFullPath = pOpenFileDialog.FileName;
if (pFullPath == "")
{
return;
}
//获取文件名和文件路径
int pIndex = https://www.sodocs.net/doc/fd10733482.html,stIndexOf("\\");
string pFilePath = pFullPath.Substring(0, pIndex);
string pFileName = pFullPath.Substring(pIndex + 1);
//打开CAD数据集
pWorkspaceFactory = new CadWorkspaceFactoryClass(); //using ESRI.ArcGIS.DataSourcesFile;
pFeatureWorkspace =
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
//打开一个要素集
pFeatureDataset =
pFeatureWorkspace.OpenFeatureDataset(pFileName);
//IFeatureClassContainer可以管理IFeatureDataset中的每个要素类
IFeatureClassContainer pFeatClassContainer = (IFeatureClassContainer)pFeatureDataset;
ClearAllData(); //新增删除数据
//对CAD文件中的要素进行遍历处理
for (int i = 0; i < pFeatClassContainer.ClassCount; i++) {
IFeatureClass pFeatClass =
pFeatClassContainer.get_Class(i);
//如果是注记,则添加注记层
if (pFeatClass.FeatureType ==
esriFeatureType.esriFTCoverageAnnotation)
{
pFeatureLayer = new CadAnnotationLayerClass();
https://www.sodocs.net/doc/fd10733482.html, = pFeatClass.AliasName;
pFeatureLayer.FeatureClass = pFeatClass;
mainMapControl.Map.AddLayer(pFeatureLayer);
}
else//如果是点、线、面则添加要素层
{
pFeatureLayer = new FeatureLayerClass();
https://www.sodocs.net/doc/fd10733482.html, = pFeatClass.AliasName;
pFeatureLayer.FeatureClass = pFeatClass;
mainMapControl.Map.AddLayer(pFeatureLayer);
}
mainMapControl.ActiveView.Refresh();
}
//同步鹰眼
SynchronizeEagleEye();
}
#endregion
#region把CAD作为栅格地图进行加载
private void btnAddRasterByCAD_Click(object sender, EventArgs e)
{
IWorkspaceFactory pCadWorkspaceFactory;
IWorkspace pWorkspace;
ICadDrawingWorkspace pCadDrawingWorkspace;
ICadDrawingDataset pCadDrawingDataset;
ICadLayer pCadLayer;
OpenFileDialog pOpenFileDialog = new OpenFileDialog();
pOpenFileDialog.Filter = "CAD(*.dwg)|*.dwg";
pOpenFileDialog.Title = "打开CAD数据文件";
pOpenFileDialog.ShowDialog();
string pFullPath = pOpenFileDialog.FileName;
if (pFullPath == "")
{
return;
}
//获取文件名和文件路径
int pIndex = https://www.sodocs.net/doc/fd10733482.html,stIndexOf("\\");
string pFilePath = pFullPath.Substring(0, pIndex);
string pFileName = pFullPath.Substring(pIndex + 1);
pCadWorkspaceFactory = new CadWorkspaceFactoryClass();
pWorkspace = pCadWorkspaceFactory.OpenFromFile(pFilePath, 0);
pCadDrawingWorkspace = (ICadDrawingWorkspace)pWorkspace;
//获得CAD文件的数据集
pCadDrawingDataset =
pCadDrawingWorkspace.OpenCadDrawingDataset(pFileName);
pCadLayer = new CadLayerClass();
pCadLayer.CadDrawingDataset = pCadDrawingDataset;
mainMapControl.Map.AddLayer(pCadLayer);
mainMapControl.ActiveView.Refresh();
}
#endregion
#region加载personGeodatabase
private void btnAddPersonGeodatabase_Click(object sender, EventArgs e)
{
IWorkspaceFactory pAccessWorkspaceFactory;
OpenFileDialog pOpenFileDialog = new OpenFileDialog(); pOpenFileDialog.Filter = "Personal
Geodatabase(*.mdb)|*.mdb";
pOpenFileDialog.Title = "打开PersonGeodatabase文件";
pOpenFileDialog.ShowDialog();
string pFullPath = pOpenFileDialog.FileName;
if (pFullPath == "")
{
return;
}
pAccessWorkspaceFactory = new AccessWorkspaceFactory(); //using ESRI.ArcGIS.DataSourcesGDB;
//获取工作空间
IWorkspace pWorkspace =
pAccessWorkspaceFactory.OpenFromFile(pFullPath, 0);
ClearAllData(); //新增删除数据
//加载工作空间里的数据
AddAllDataset(pWorkspace, mainMapControl);
}
#endregion
#region加载文件地理库
private void btnAddFileDatabase_Click(object sender, EventArgs
e)
{
IWorkspaceFactory pFileGDBWorkspaceFactory;
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() != DialogResult.OK) return;
string pFullPath = dlg.SelectedPath;
if (pFullPath == "")
{
return;
}
pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); //using ESRI.ArcGIS.DataSourcesGDB;
ClearAllData(); //新增删除数据
//获取工作空间
IWorkspace pWorkspace =
pFileGDBWorkspaceFactory.OpenFromFile(pFullPath, 0);
AddAllDataset(pWorkspace, mainMapControl);
}
#endregion
#region加载SDE数据库
///
///服务器连接
///
///
///
private void btnAddSDEByService_Click(object sender, EventArgs e)
{
IWorkspace pWorkspace;
pWorkspace = arcSDEWorkspaceOpen("192.168.70.110",
"esri_sde", "sde", "sde", "", "SDE.DEFAULT");
//如果工作空间不为空则进行加载
if (pWorkspace != null)
{
AddAllDataset(pWorkspace, mainMapControl);
}
}
///
///直连
///
///
///
private void btnAddSDEByDirect_Click(object sender, EventArgs e)
{
IWorkspace pWorkspace;
pWorkspace = arcSDEWorkspaceOpen("", "sde:oracle11g:orcl", "sde", "sde", "", "SDE.DEFAULT");
//如果工作空间不为空则进行加载
if (pWorkspace != null)
{
AddAllDataset(pWorkspace, mainMapControl);
}
}
///
///通过SDE连接打开SDE数据库
///
///服务器IP
///数据库实例,应用服务器连接为:5151或esri_sde,直连为sde:oracle11g:orcl(orcl为服务名)
///SDE用户名
///用户密码
///数据库
///SDE版本,缺省为"SDE.DEFAULT"
///
private IWorkspace arcSDEWorkspaceOpen(string server, string instance, string user, string password, string database, string version) {
IWorkspace pWorkSpace = null;
//创建和实例化数据集
IPropertySet pPropertySet = new PropertySetClass();
pPropertySet.SetProperty("SERVER", server);
pPropertySet.SetProperty("INSTANCE", instance);
pPropertySet.SetProperty("USER", user);
pPropertySet.SetProperty("PASSWORD", password);
pPropertySet.SetProperty("DATABASE", database);
pPropertySet.SetProperty("VERSION", version);
IWorkspaceFactory2 pWorkspaceFactory = new SdeWorkspaceFactoryClass();
try
{
pWorkSpace = pWorkspaceFactory.Open(pPropertySet, 0); }
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return pWorkSpace;
}
#endregion
#region加载txt文本数据
private void btnAddTxt_Click(object sender, EventArgs e)
{
FormAddtxt frmAddtxt = new FormAddtxt();
frmAddtxt.BuddyMap = mainMapControl;
frmAddtxt.Show();
}
#endregion
#endregion
#region保存
//保存地图
private void btnSaveMap_Click(object sender, EventArgs e)
{
try
{
string sMxdFileName = mainMapControl.DocumentFilename;
IMapDocument pMapDocument = new MapDocumentClass();
if (sMxdFileName!=null &&
mainMapControl.CheckMxFile(sMxdFileName))
{
if (pMapDocument.get_IsReadOnly(sMxdFileName))
{
MessageBox.Show("本地图文档是只读的,不能保
存!");
pMapDocument.Close();
return;
}
}
else
{
SaveFileDialog pSaveFileDialog = new SaveFileDialog();
pSaveFileDialog.Title = "请选择保存路径";
pSaveFileDialog.OverwritePrompt = true;
pSaveFileDialog.Filter = "ArcMap文档(*.mxd)
|*.mxd|ArcMap模板(*.mxt)|*.mxt";
pSaveFileDialog.RestoreDirectory = true;
if (pSaveFileDialog.ShowDialog() == DialogResult.OK)
{
sMxdFileName = pSaveFileDialog.FileName;
}
else
{
return;
}
}
pMapDocument.New(sMxdFileName);
pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);
pMapDocument.Save(https://www.sodocs.net/doc/fd10733482.html,esRelativePaths, true);
pMapDocument.Close();
MessageBox.Show("保存地图文档成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//ICommand command = new ControlsSaveAsDocCommandClass();
//command.OnCreate(mainMapControl.Object);
//command.OnClick();
}
//地图另存为
private void btnSaveAsMap_Click(object sender, EventArgs e) {
try
{
SaveFileDialog pSaveFileDialog = new SaveFileDialog(); pSaveFileDialog.Title = "另存为";
pSaveFileDialog.OverwritePrompt = true;
pSaveFileDialog.Filter = "ArcMap文档(*.mxd)
|*.mxd|ArcMap模板(*.mxt)|*.mxt";
pSaveFileDialog.RestoreDirectory = true;
if (pSaveFileDialog.ShowDialog() == DialogResult.OK) {
string sFilePath = pSaveFileDialog.FileName;
IMapDocument pMapDocument = new MapDocumentClass(); pMapDocument.New(sFilePath);
pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);
pMapDocument.Save(true, true);
pMapDocument.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
#region地图浏览
//拉框放大
string pMouseOperate = null;
private void btnZoomIn_Click(object sender, EventArgs e)
{
mainMapControl.CurrentTool = null;
pMouseOperate = "ZoomIn";
mainMapControl.MousePointer =
esriControlsMousePointer.esriPointerZoomIn;
}
//拉框缩小
private void btnZoomOut_Click(object sender, EventArgs e)
{
mainMapControl.CurrentTool = null;
pMouseOperate = "ZoomOut";
mainMapControl.MousePointer =
esriControlsMousePointer.esriPointerZoomOut;
#region自定义拉框缩小
//IEnvelope trackExtent, currentExtent, NewIEN = null;
//currentExtent = mainMapControl.Extent;
//trackExtent = mainMapControl.TrackRectangle();
//double dXmin = 0, dYmin = 0, dXmax = 0, dYmax = 0, dHeight = 0, dWidth = 0;
//dWidth = currentExtent.Width * (currentExtent.Width / trackExtent.Width);
//dHeight = currentExtent.Height * (currentExtent.Height / trackExtent.Height);
//dXmin = currentExtent.XMin - ((trackExtent.XMin - currentExtent.XMin) * (currentExtent.Width / trackExtent.Width));
//dYmin = currentExtent.YMin - ((trackExtent.YMin - currentExtent.YMin) * (currentExtent.Height / trackExtent.Height));
//dXmax = dXmin + dWidth;
//dYmax = dYmin + dHeight;
//NewIEN = new EnvelopeClass();
//NewIEN.PutCoords(dXmin, dYmin, dXmax, dYmax);
//mainMapControl.Extent = NewIEN;
#endregion
}
//逐级放大
private void btnZoomInStep_Click(object sender, EventArgs e) {
IEnvelope pEnvelope;
pEnvelope = mainMapControl.Extent;
pEnvelope.Expand(0.5, 0.5, true); //这里设置放大为2倍,可以根据需要具体设置
mainMapControl.Extent = pEnvelope;
mainMapControl.ActiveView.Refresh();
}
//逐级缩小
private void btnZoomOutStep_Click(object sender, EventArgs e) {
//IEnvelope pEnvelope;
//pEnvelope = mainMapControl.Extent;
//pEnvelope.Expand(1.5, 1.5, true);
//mainMapControl.Extent = pEnvelope;
//mainMapControl.ActiveView.Refresh();
IActiveView pActiveView = mainMapControl.ActiveView;
IPoint centerPoint = new PointClass();
centerPoint.PutCoords((pActiveView.Extent.XMin + pActiveView.Extent.XMax) / 2, (pActiveView.Extent.YMax + pActiveView.Extent.YMin) / 2);
IEnvelope envlope = pActiveView.Extent;
envlope.Expand(1.5, 1.5, true); //和放大的区别在于Expand函数的参数不同
pActiveView.Extent.CenterAt(centerPoint);
pActiveView.Extent = envlope;
pActiveView.Refresh();
}
//漫游
private void btnPan_Click(object sender, EventArgs e)
{
mainMapControl.CurrentTool = null;
pMouseOperate = "Pan";
mainMapControl.MousePointer =
esriControlsMousePointer.esriPointerPan;
}
IExtentStack pExtentStack;
//前一视图
private void btnFrontView_Click(object sender, EventArgs e) {
pExtentStack = mainMapControl.ActiveView.ExtentStack;
//判断是否可以回到前一视图,第一个视图没有前一视图
if (pExtentStack.CanUndo())
{
pExtentStack.Undo();
btnForWardView.Enabled = true;
if (!pExtentStack.CanUndo())
{
btnFrontView.Enabled = false;
}
}
mainMapControl.ActiveView.Refresh();
}
//后一视图
private void btnForWardView_Click(object sender, EventArgs e) {
pExtentStack = mainMapControl.ActiveView.ExtentStack;
//判断是否可以回到后一视图,最后一个视图没有后一视图
if (pExtentStack.CanRedo())
{
pExtentStack.Redo();
btnFrontView.Enabled = true;
if (!pExtentStack.CanRedo())
{