AE中,想在进窗口引入上一个窗口的mapcontrol控件,进行mxd文档内图形的查询选择
在上一个窗体的【空间查询】处,设置弹出一个新窗口,用于关键字查询,查询内容为上一个窗口中mapcontrol中mxd文档内图形的查询选择
private void SelectFeatureByAttribute()
{
string searchName = this.textBox1.Text.Trim();
if (null != searchName && searchName.Length > 1)
{//实例化给axMapControl1.Map.get_Layer()
ILayer layer = axMapControl1.Map.get_Layer(1);
IFeatureLayer featureLayer = layer as IFeatureLayer;//接口转换(查询),将矢量图层转成要素图层
IFeatureClass featureClass = featureLayer.FeatureClass;//只读,存放所有图形,构建一个要素类
IQueryFilter queryFilter = new QueryFilterClass();//报错Geodatabase改为false//查询过滤器
queryFilter.WhereClause = "continent like '%" + searchName + "%'";//设定过滤表达式%代表任何字符,这里写死了
IFeatureCursor featureCursor;//访问要素类一系列要素,用于实现属性查询
featureCursor = featureClass.Search(queryFilter, true);//形成一个查询记录集,指针定位。需要一个游标指向它
IFeature feature = null;
feature = featureCursor.NextFeature();//当feature为空时,第一次使用next,指向查询到的图形结果的第一个,下一次使用时就是下一个
if (feature != null)//此处只选择第一个
{//如果不为空,调用selectfeature方法,把图层上被选中的图形选出来,这个才可以高亮显示
axMapControl1.Map.SelectFeature(axMapControl1.get_Layer(1), feature);//把图层
axMapControl1.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
}
}