紧急求助!C#中应用mapx5.0问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:04:12
本人在 c#中应用mapx5.0,欲实现一个测距功能,代码如下:

private void axMap1_PolyToolUsed(object sender, AxMapXLib.CMapXEvents_PolyToolUsedEvent e)
{
MapXLib.PointsClass pts=new MapXLib.PointsClass();
switch(e.flags)
{
case (int)MapXLib.ToolFlagConstants.miToolInProgress:
pts=(MapXLib.PointsClass)e.points;//此处
Dis=axMap1.Distance(pts._Item(pts.Count-1).X, pts._Item(pts.Count-1).Y,
pts._Item(pts.Count).X,
pts._Item(pts.Count).Y);
DisSum+=Dis;
break;
....
....
}
}

以上代码是从网上搜到的,奇怪的是在C#2003中运行无误能实现功能,而在C#2005中执行时,运行到“//此处”却抛出异常,如下:

“无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“MapXLib.PointsClass”。进入 CLR 且不支持 IProvideClassInfo 或没有注册任何互操作程序集的 COM 组件都将包装在 __ComObject 类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础 COM 组件支持对接口 IID 的 QueryInterface 调用,就能将这些实例强制转换为接口。”

到底哪出了问题,请高手给予解答

我不是高手,但是这个网站相信对你会有帮助的.里面有.net常见问题的解决方法,你还是到这里面找个答案吧,
http://www.asp2007.cn/Article/list.asp?classid=162
参考资料:http://www.asp2007.cn/Article/list.asp?classid=162

e.points应该是windows鼠标的点,它是转不了地图坐标点,你看看MapXLib里是否有一个converttomap之类的函数,可以把坐标点转换成地图坐标,然后,你再把转好的,赋值给pts.