最近学习ArcEngine开发遇到了奇怪的异常,代码不访问。检查了好几次,代码在我这半路出家的人看来没有逻辑错误,但是就是没有画线。逐步运行的时候,发现运行至绿色的代码的地方就跳出了本过程。检查再三,在绿色的代码处加上了try{ } catch{ } ,终于抛出了异常。异常为“未将对象引用设置到对象的实例”。 检查发现,异常设置的复选框没有选中(如下所示)(不知道为什么不是默认选中的),VS不自动的抛出异常,只是遇到了无法解决的问题自动跳出了过程。抛出异常后,错误就比较容易修改了。将错误处的语句改为 :IPolyline pDrawPolyline = new ESRI.ArcGIS.Geometry.PolylineClass();
并将引发异常的复选框全部选中。
bool DrawPolylineOrNot = false; //是否画线
int DrawPolylineClickCount; //记录画线时候画的是第几个点
IPolyline pDrawPolyline = null; //错误
private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
if (e.button == 1)
{
IPoint pPoint = new PointClass();
pPoint.PutCoords(e.mapX, e.mapY);
//绘制剖面用的曲线
if (DrawPolylineOrNot)
{
//第一次点击,设置起始点
if (DrawPolylineClickCount == 0)
{
pDrawPolyline.FromPoint = pPoint;
DrawPolylineClickCount++;
}
else if (DrawPolylineClickCount == 1)
{
pDrawPolyline.ToPoint = pPoint;
DrawPolylineClickCount = 0;
DrawPolylineOrNot = false;
axMapControl1.DrawShape(pDrawPolyline);
axMapControl1.Refresh();
}
}
}
}