搜档网
当前位置:搜档网 › ArcEngine主要功能源码

ArcEngine主要功能源码

ArcEngine主要功能源码
ArcEngine主要功能源码

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())

{

相关主题