Esempio n. 1
0
        //GridControl的双击事件
        private void GridControl_Info_DoubleClick(object sender, EventArgs e)
        {
            if (GridControl_Info.DataSource != null)
            { //获取FID或者第一个ID字段名称(索引字段)
                string StrClmIndex = GridView_Info.Columns[0].FieldName;
                //获取FID或者第一个ID字段值
                int IntQueryIndex = Convert.ToInt32(GridView_Info.GetSelectedRows()[0]);

                //查询定位的要素对象
                IFeatureClass pFC     = pFeaLyr.FeatureClass;
                IQueryFilter  qFilter = new QueryFilter();
                qFilter.WhereClause = StrClmIndex + "=" + IntQueryIndex.ToString();
                IFeatureCursor fCursor = pFC.Search(qFilter, false);
                IFeature       feature = fCursor.NextFeature();

                //获取查询要素中心点
                IPoint point = new ESRI.ArcGIS.Geometry.Point();
                //如果是面
                if (feature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
                {
                    IArea area = feature.Shape as IArea;
                    point = area.Centroid;
                }
                //如果是点
                else if (feature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
                {
                    point = feature.Shape as IPoint;
                }
                //如果是线
                else if (feature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
                {
                    IArea area = feature.Extent as IArea;
                    point = area.Centroid;
                }

                //根据要素中心点进行空间定位
                axMapControl_1.CenterAt(point);
                axMapControl_1.Update();
                FlashFeature(feature);
            }
            else
            {
                MessageBox.Show("请先执行查询功能,再进行双击确定定位操作!");
            }
        }