📄 datalist.cs
字号:
try
{
IDataset pDataset = pDatasets.Next();
while(pDataset!=null)
{
try
{
switch(pDataset.Type)
{
case esriDatasetType.esriDTFeatureClass:
{
IFeatureWorkspace pFeatureWorkspace;
pFeatureWorkspace=(IFeatureWorkspace)ws;
IFeatureClass pFeatureClass=null;
pFeatureClass=pFeatureWorkspace.OpenFeatureClass(pDataset.BrowseName);
ListViewItem item1 = new ListViewItem(pDataset.BrowseName);
item1.SubItems.Add("要素类");
switch(pFeatureClass.ShapeType)
{
case esriGeometryType.esriGeometryPoint:
item1.ImageIndex = 1;
break;
case esriGeometryType.esriGeometryPolyline:
item1.ImageIndex = 2;
break;
case esriGeometryType.esriGeometryPolygon:
item1.ImageIndex = 3;
break;
}
this.listView1.Items.Add(item1);
}
break;
case esriDatasetType.esriDTFeatureDataset:
{
ListViewItem item2 = new ListViewItem(pDataset.BrowseName);
item2.SubItems.Add("要素集");
item2.ImageIndex = 0;
this.listView1.Items.Add(item2);
}
break;
case esriDatasetType.esriDTRasterDataset:
{
ListViewItem item2 = new ListViewItem(pDataset.BrowseName);
item2.SubItems.Add("栅格数据");
item2.ImageIndex = 9;
this.listView1.Items.Add(item2);
}
break;
}
}
catch(Exception myerr)
{
MessageBox.Show(myerr.Message);
}
pDataset = pDatasets.Next();
}
}
catch(Exception myerr)
{
MessageBox.Show(myerr.Message);
}
}
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
ToolBarButton btn = e.Button;
if(btn.ToolTipText=="上一级")
{
if(Datasets.Count>1)
{
this.listView1.Items.Clear();
Datasets.RemoveAt(Datasets.Count-1);
IEnumDataset Dataset_now = (IEnumDataset)Datasets[Datasets.Count-1];
Dataset_now.Reset();
GetDataList(Dataset_now);
}
}
if(btn.ToolTipText=="图标")
{
this.listView1.View = View.LargeIcon;
}
if(btn.ToolTipText=="列表")
{
this.listView1.View = View.List;
}
if(btn.ToolTipText=="详细资料")
{
this.listView1.View = View.Details;
}
}
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void listView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Clicks==2)
{
ListViewItem lItem = this.listView1.GetItemAt(e.X,e.Y);
if(lItem!=null)
{
if(lItem.SubItems[1].Text=="要素集")
{
//获取这个要素集并列举该要素集中的数据
IEnumDataset Dataset_now = (IEnumDataset)Datasets[Datasets.Count-1];
//MessageBox.Show(Datasets.Count.ToString());
Dataset_now.Reset();
IDataset pDataset = Dataset_now.Next();
while(pDataset!=null)
{
try
{
if(pDataset.BrowseName==lItem.Text)
{
this.listView1.Items.Clear();
pDataset_ = pDataset;
GetDataList(pDataset.Subsets);
Datasets.Add(pDataset.Subsets);
break;
}
}
catch(Exception myerr)
{
MessageBox.Show(myerr.Message);
}
pDataset = Dataset_now.Next();
}
}
else if(lItem.SubItems[1].Text=="要素类")
{
//加载图层
if(this.Datasets.Count==1)
{
//直接加载数据
IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)ws;
IFeatureClass pFeatureClass=null;
pFeatureClass=pFeatureWorkspace.OpenFeatureClass(lItem.Text);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
if(this.mapControl!=null)
this.mapControl.AddLayer(pFeatureLayer,0);
this.Close();
}
else
{
//加载数据集中的数据
IFeatureClassContainer pFCC = (IFeatureClassContainer)pDataset_;
IFeatureClass pFeatureClass = pFCC.get_ClassByName(lItem.Text);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
if(this.mapControl!=null)
this.mapControl.AddLayer(pFeatureLayer,0);
this.Close();
}
}
else if(lItem.SubItems[1].Text=="栅格数据")
{
//加载图层
if(this.Datasets.Count==1)
{
//直接加载数据
IRasterWorkspaceEx pWs = (IRasterWorkspaceEx)ws;
IRasterDataset pRasterDataset = null;
pRasterDataset = pWs.OpenRasterDataset(lItem.Text);
IRasterLayer prasterlayer = new RasterLayerClass();
prasterlayer.CreateFromDataset(pRasterDataset);
if(this.mapControl!=null)
this.mapControl.AddLayer(prasterlayer,0);
this.Close();
}
else
{
//不能加载栅格数据集
}
}
}
}
}
private void button5_Click(object sender, System.EventArgs e)
{
for(int i=0;i<this.listView1.SelectedItems.Count;i++)
{
ListViewItem lItem = listView1.SelectedItems[i];
if(lItem!=null)
{
if(lItem.SubItems[1].Text=="要素集")
{
//获取这个要素集并列举该要素集中的数据
IEnumDataset Dataset_now = (IEnumDataset)Datasets[Datasets.Count-1];
//MessageBox.Show(Datasets.Count.ToString());
Dataset_now.Reset();
IDataset pDataset = Dataset_now.Next();
while(pDataset!=null)
{
try
{
if(pDataset.BrowseName==lItem.Text)
{
this.listView1.Items.Clear();
pDataset_ = pDataset;
GetDataList(pDataset.Subsets);
Datasets.Add(pDataset.Subsets);
break;
}
}
catch(Exception myerr)
{
MessageBox.Show(myerr.Message);
}
pDataset = Dataset_now.Next();
}
break;
}
else if(lItem.SubItems[1].Text=="要素类")
{
//加载图层
if(this.Datasets.Count==1)
{
//直接加载数据
IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)ws;
IFeatureClass pFeatureClass=null;
pFeatureClass=pFeatureWorkspace.OpenFeatureClass(lItem.Text);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
if(this.mapControl!=null)
this.mapControl.AddLayer(pFeatureLayer,0);
this.Close();
}
else
{
//加载数据集中的数据
IFeatureClassContainer pFCC = (IFeatureClassContainer)pDataset_;
IFeatureClass pFeatureClass = pFCC.get_ClassByName(lItem.Text);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
if(this.mapControl!=null)
this.mapControl.AddLayer(pFeatureLayer,0);
this.Close();
}
}
else if(lItem.SubItems[1].Text=="栅格数据")
{
//加载图层
if(this.Datasets.Count==1)
{
//直接加载数据
IRasterWorkspaceEx pWs = (IRasterWorkspaceEx)ws;
IRasterDataset pRasterDataset = null;
pRasterDataset = pWs.OpenRasterDataset(lItem.Text);
IRasterLayer prasterlayer = new RasterLayerClass();
prasterlayer.CreateFromDataset(pRasterDataset);
if(this.mapControl!=null)
this.mapControl.AddLayer(prasterlayer,0);
this.Close();
}
else
{
//不能加载数据集中的栅格数据
}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -