天道酬勤

博观而约取,厚积而薄发!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

《ArcGIS Engine+C#实例开发教程》教程Bug及优化方案1

Posted on 2010-11-26 11:26  Happy Coding  阅读(2682)  评论(0编辑  收藏  举报

到第六讲为止已经发现的教程Bug及解决方法如下:

1、在第二讲可能会出现变量未定义。
原因:第二讲与第三讲联系紧密,我为控制篇幅才将其分为两讲,某些变量是在第三讲才进行定义,请大家注意。
2、第六讲弹不出TOCControl的右键菜单
原因:没有取得m_tocControl的指针,即没有把m_tocControl指针与axTOCControl1控件绑定,导致调用m_menuMap.PopupMenu(e.x, e.y,m_tocControl.hWnd);时m_tocControl.hWnd为NULL,故无法弹出菜单。
解决方法:在Form1_Load()函数中,添加如下代码:

 

m_tocControl = (ITOCControl2)this.axTOCControl1.Object; 


目前已经发现的优化方案如下:

1、教程第四讲,坐标单位前面的esri,原用switch语句逐一替换,其实直接用取子串(Substring)的方法截去更方便。
修改代码如下:

 

 CoordinateLabel.Text= " 当前坐标 X = " + e.mapX.ToString() + " Y = " + e.mapY.ToString() + " "+ this.axMapControl1.MapUnits.ToString().Substring(4);


2、教程第四讲,固定状态栏中的比例尺和当前坐标项目的宽度以防止闪烁。
方法如下:
选中状态栏中的比例尺或当前坐标项目,把其autoSize属性设为False,再在Size属性里设置宽度。经测试,比例尺宽度为150,当前坐标宽度为400比较合适。