using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
namespace EngineWindowsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        IMap m_pMap;                //获得AxMapControl1的地图
        IEnumLayer m_pEnumLayers;   //在一个地图中枚举层集
        ILayer m_pLayer;   

        private void Form1_Load(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\实验三数据\\实验三数据.mxd";
            if (axMapControl1.CheckMxFile(path)) axMapControl1.LoadMxFile(path);
            axTOCControl1.SetBuddyControl(axMapControl1);
            cboMaps.Items.Add(axMapControl1.Map.Name);
        }

        private void cboMaps_SelectedIndexChanged(object sender, EventArgs e)
        {
            m_pMap = axMapControl1.Map;
            m_pEnumLayers = m_pMap.Layers;
            m_pLayer = m_pEnumLayers.Next();
            while (m_pLayer != null)
            {
                lboMapLayers.Items.Add(m_pLayer.Name);
                m_pLayer = m_pEnumLayers.Next();
            }
        }

        private void lboMapLayers_Click(object sender, EventArgs e)
        {
            lboFields.Items.Clear();
            m_pEnumLayers.Reset();
            m_pLayer = m_pEnumLayers.Next();
            while (m_pLayer != null)
            {
                if (m_pLayer.Name == lboMapLayers.Text) break;
                m_pLayer = m_pEnumLayers.Next();
            }
            IFeatureLayer pFLayer = m_pLayer as IFeatureLayer;
            IFeatureClass pFClass;
            IFields pFields;
            pFClass = pFLayer.FeatureClass;
            pFields = pFClass.Fields;
            int i;
            for (i = 0; i < pFields.FieldCount - 1; i++)
            {
                lboFields.Items.Add(pFields.get_Field(i).Name);
            }

        }

        private void lboFields_Click(object sender, EventArgs e)
        {
            lboFields.Items.Clear();
            m_pEnumLayers.Reset();
            m_pLayer = m_pEnumLayers.Next();
            while (m_pLayer != null)
                if (m_pLayer.Name == lboMapLayers.Text) break;
            m_pLayer = m_pEnumLayers.Next();
            IFeatureLayer pFLayer = m_pLayer as IFeatureLayer;
            IFeatureClass pFClass;
            IFields pFields;
            pFClass = pFLayer.FeatureClass;
            pFields = pFClass.Fields;
            int i;
            for (i = 0; i < pFields.FieldCount - 1; i++)
            {
                lboFields.Items.Add(pFields.get_Field(i).Name);
            }
        }
    }
}