最近學習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();
}
}
}
}