/// <summary> /// 填充目标图层下拉框 /// </summary> /// <param name="pLayer"></param> /// <param name="ricb"></param> private void AddLayersToTargetLayerComboBox(ILayer pLayer, RepositoryItemComboBox ricb) { if (pLayer is IGroupLayer)//如果是组合图层 { ICompositeLayer groupLayer = (ICompositeLayer)pLayer; for (int j = 0; j < groupLayer.Count; j++) { //递归 AddLayersToTargetLayerComboBox(groupLayer.get_Layer(j), ricb); } } else if (pLayer is IFeatureLayer) //如果是地理要素图层 { //排除CAD图层 if ((pLayer as IFeatureLayer).DataSourceType == "CAD Annotation Feature Class" || (pLayer as IFeatureLayer).DataSourceType == "CAD Point Feature Class" || (pLayer as IFeatureLayer).DataSourceType == "CAD Polyline Feature Class" || (pLayer as IFeatureLayer).DataSourceType == "CAD Polygon Feature Class") { return; } //判断图层是否可编辑 IDatasetEditInfo pEdit = (IDatasetEditInfo)((pLayer as IFeatureLayer).FeatureClass); if (!pEdit.CanEdit) { return; } //将图层添加进ComBox Item item = new Item(pLayer.Name, pLayer); ricb.Items.Add(item); } }
/// <summary> /// 初始化控件 /// </summary> private void initControls() { IFeatureLayer pFeaLayer = (IFeatureLayer)m_FeaLay; if (pFeaLayer == null) { return; } IDatasetEditInfo pEdit = (IDatasetEditInfo)pFeaLayer.FeatureClass; ILayerEffects pLayerEff = (ILayerEffects)m_FeaLay; //数据源 IDataLayer pDataLayer = (IDataLayer)m_FeaLay; IDatasetName pDatasetName = pDataLayer.DataSourceName as IDatasetName; IWorkspaceName pWSName = pDatasetName.WorkspaceName; IFeatureClassName pFCName = pDatasetName as IFeatureClassName; string strDataSourceType = ""; string strFeatureDataSet = ""; if (pFCName.FeatureDatasetName == null) { strDataSourceType = "数据类型 :" + "个人空间数据库 要素类"; strFeatureDataSet = "数 据 集 :" + "无"; } else { strDataSourceType = "数据类型 :" + pFCName.FeatureDatasetName.Category + "(" + pFeaLayer.DataSourceType + ")"; strFeatureDataSet = "数 据 集 :" + pFCName.FeatureDatasetName.Name; } string strFeatureClass = "要 素 类 :" + pDatasetName.Name; string strFeatureType = "要素类型 :" + pFCName.FeatureType.ToString(); string strGeometyrType = "几何类型 :" + pFCName.ShapeType.ToString(); string strLocationPath = "位 置 :" + pWSName.PathName; string strRelativeBase = "相对路径 :" + pDataLayer.RelativeBase; this.txtSoureFile.Text = strDataSourceType + "\r\n" + strFeatureDataSet + "\r\n" + strFeatureClass + "\r\n" + strFeatureType + "\r\n" + strGeometyrType + "\r\n" + strRelativeBase + "\r\n" + strLocationPath; this.txtXMin.Text = m_FeaLay.AreaOfInterest.XMin.ToString(".##"); this.txtXMax.Text = m_FeaLay.AreaOfInterest.XMax.ToString(".##"); this.txtYMin.Text = m_FeaLay.AreaOfInterest.YMin.ToString(".##"); this.txtYMax.Text = m_FeaLay.AreaOfInterest.YMax.ToString(".##"); //基本信息 this.txtLayerName.Text = m_FeaLay.Name; if (pEdit != null) { this.chkEdit.Checked = pEdit.CanEdit; } if (m_FeaLay.FeatureClass != null) { int dfIndex = -1; this.chkVisible.Checked = pFeaLayer.Visible; this.cboDisplayField.Properties.Items.Clear(); for (int i = 0; i < m_FeaLay.FeatureClass.Fields.FieldCount; i++) { IField pField = m_FeaLay.FeatureClass.Fields.get_Field(i); if (pField.Name == pFeaLayer.DisplayField) { dfIndex = i; } Class.Item item = new Class.Item(pField.AliasName, pField.Name); cboDisplayField.Properties.Items.Add(item); } this.cboDisplayField.SelectedIndex = dfIndex; this.txtTransparency.Text = pLayerEff.Transparency.ToString(); //this.txtScaleMin.Text = (pFeaLayer as ILayerGeneralProperties).LastMinimumScale.ToString(); //this.txtScaleMax.Text = (pFeaLayer as ILayerGeneralProperties).LastMaximumScale.ToString(); this.txtScaleMin.Text = pFeaLayer.MinimumScale.ToString(); this.txtScaleMax.Text = pFeaLayer.MaximumScale.ToString(); this.txtDescription.Text = (pFeaLayer as ILayerGeneralProperties).LayerDescription; if (pFeaLayer.MinimumScale == 0 && pFeaLayer.MaximumScale == 0) { this.rdoGroupScale.SelectedIndex = 0; txtScaleMin.Enabled = false; txtScaleMax.Enabled = false; } else { this.rdoGroupScale.SelectedIndex = 1; txtScaleMin.Enabled = true; txtScaleMax.Enabled = true; } chkShowTip.Checked = pFeaLayer.ShowTips; if (pFeaLayer is IGeoFeatureLayer) { chkLabelAll.Checked = (pFeaLayer as IGeoFeatureLayer).DisplayAnnotation; } chkScaleSymbol.Checked = pFeaLayer.ScaleSymbols; m_pTableFields = pFeaLayer as ITableFields; //字段信息 string strType = ""; for (int i = 0; i < m_pTableFields.FieldCount; i++) { IField pField = m_pTableFields.get_Field(i); IFieldInfo pFieldInfo = m_pTableFields.get_FieldInfo(i); switch (pField.Type)//类型 { case esriFieldType.esriFieldTypeBlob: strType = "二进制块"; break; case esriFieldType.esriFieldTypeDate: strType = "日期型"; break; case esriFieldType.esriFieldTypeDouble: strType = "双精度"; break; case esriFieldType.esriFieldTypeGeometry: strType = "几何形体"; break; case esriFieldType.esriFieldTypeGlobalID: strType = "GlobalID"; break; case esriFieldType.esriFieldTypeGUID: strType = "GUID"; break; case esriFieldType.esriFieldTypeOID: strType = "OID"; break; case esriFieldType.esriFieldTypeRaster: strType = "栅格"; break; case esriFieldType.esriFieldTypeSingle: strType = "单精度"; break; case esriFieldType.esriFieldTypeSmallInteger: strType = "短整形"; break; case esriFieldType.esriFieldTypeString: strType = "字符型"; break; } TreeListNode node = this.listViewFieldInfo.Nodes.Add(new object[] { pField.AliasName, pField.Name, strType }); node.Checked = pFieldInfo.Visible; } //初始化过滤条件面板 initFilterCondition(); } }