阅读:1600回复:3
关于例子中的selection.query
<P>ArcGIS8.3有个例子在controls的commnad下,叫selection,有个cls叫query,不知道大家有没有用过。</P>
<P>最近我把这个selection功能的query独立出来,改成了ArcEngine的DLL,在调用时发现了问题,</P> <P>如果mapcontrol的图层是以layer方式添加的就可以正常使用,如果是往mapcontrol里调入了一个MXD文件,那么这个query对话框里的图层就是MXD文件的图层,但是再打开一个MXD文件,发现query对话框里的图层还是第一个MXD文件的图层。</P> <P>但是可以肯定focusmap是传过去了,因为msgbox显示的layercount是一样的,不知道什么原因?</P> <P>请大家帮我分析一下,</P> |
|
1楼#
发布于:2004-11-22 16:46
帮你顶一下:)
|
|
2楼#
发布于:2004-11-22 16:54
<P>你在建立你的button的时候可能已经检测了你的mxd里的图层,并做了添加</P><P>所以你打开另一个mxd还是原来的文件,是因为你没有重新添加你的图层,也就是没有再次检测了你的mxd里的图层</P><P>检查下你dll里按纽建立时候的代码</P>
|
|
|
3楼#
发布于:2004-11-22 20:09
找到原因了
<P>dll里定义了一个mapevects,显示图层的listbox的刷新机制是用focusmap的addlayer和delete但是mapevents的focusmapchanged这个事件里虽然也有刷新listbox的代码,但是不起作用。原因是frmQuery没有被Unload掉,所以listbox不刷新</P>
<P>所以,解决办法是在button-click里把FrmQuery给Unload掉,再Load就行了,但是这个办法好像不怎么样,会报错,但运行正常。</P> <P>GIS你没有好一点的办法?</P> |
|