天天看点

基于ArcGIS Engine+C#的二次开发---电子校园管理信息系统(1)

  本人也是一名二次开发的菜鸟级孩子,经过一个月的挑灯夜战终于搞定了一个小系统,过程中遇到很多小问题,特此将详细代码发帖,希望对后面的小菜鸟们有帮助,系统视频演示地址:http://v.youku.com/v_show/id_XNjE4NzM4MzI0.html

首先是新建工程,然后新建第一个Windows窗体Form1.下面是Form1.cs的源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.GeoDatabaseExtensions;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.ADF;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.DataSourcesGDB;
using MapAndPageLayoutSynchApp;

namespace GoodMap
{
    public partial class Form1 : Form
    {
        #region class private members
        private bool flag;
        private string strTitle;
        private Font strFont;
        private Color strColor;
        private MapSurround  m_MapSurround;
        private MapLoad m_MapLoad;
        private ESRI.ArcGIS.Controls.IMapControl3 m_mapControl = null;
        private ESRI.ArcGIS.Controls.IPageLayoutControl2 m_pageLayoutControl = null;
        private ControlsSynchronizer m_controlsSynchronizer = null;
        #endregion
       
        public ILayer pMoveLayer;//需要被调整的图层;
        public int toIndex;//将要调整到的目标图层的索引;
        public ILayer pselectLayer;
        //当前点移动反馈对象
        IMovePointFeedback m_MovePointFeedback = new MovePointFeedbackClass();
        //当前线移动反馈对象
        IMoveLineFeedback m_MoveLineFeedback = new MoveLineFeedbackClass();
        //当前面移动反馈对象
        IMovePolygonFeedback m_MovePolygonFeedback = new MovePolygonFeedbackClass();
        private esriTOCControlItem toccItem = esriTOCControlItem.esriTOCControlItemNone;
        private IBasicMap pBasicMap = null;
        public ILayer p_Layer=null;
        System.Object unk = null;
        System.Object data = null;  

        public bool frmAttriQueryisOpen = false;      //用于按属性查询
        public bool frmLocationisOpen = false;      //用于按位置查询
        public bool frmQuickFindisOpen = false;    //用于快速查找


        #region class constructor
        public Form1()
        {
            InitializeComponent();
            m_MapSurround=new MapSurround();
            m_MapLoad = new MapLoad();
            m_mapControl = (IMapControl3)this.axMapControl1.Object;
            m_pageLayoutControl = (IPageLayoutControl2)this.axPageLayoutControl1.Object;
           //初始化controls synchronization calss
            m_controlsSynchronizer = new ControlsSynchronizer(m_mapControl, m_pageLayoutControl);
           //把MapControl和PageLayoutControl绑定起来(两个都指向同一个Map),然后设置MapControl为活动的Control
           m_controlsSynchronizer.BindControls(true);
           //为了在切换MapControl和PageLayoutControl视图同步,要添加Framework Control
         //  m_controlsSynchronizer.AddFrameworkControl(axToolbarControl1.Object);
           m_controlsSynchronizer.AddFrameworkControl(this.axTOCControl1.Object);

        }
        #endregion
        public string StrTitle
        {
            get
            { return strTitle; }
            set
            { strTitle = value;  }
        }


        public Font StrFont
        {
            get
            { return strFont;}
            set
            { strFont = value;  }
        }


        public Color StrColor
        {
            get
            { return strColor;  }
            set
            {strColor = value;   }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
           
            axTOCControl2.SetBuddyControl(axMapControl1);
            flag = false;
        }
        #region  基础操作
        //新建地图文档
        private void OpenDoc_Click(object sender, EventArgs e)
        {
            try
            {
                m_MapLoad.OperateMapDoc(axMapControl1, axMapControl2, "NewDoc");
                axPageLayoutControl1.Refresh();
            }
            catch(Exception)
            {
                MessageBox.Show("新建地图无效!");
            }
        }
       //打开地图文档
        private void opensxdmap_Click(object sender, EventArgs e)
        {
            try
            {
                m_MapLoad.OperateMapDoc(axMapControl1, axMapControl2, "OpenDoc");
                //loadMapDocument();
               // MessageBox.Show("保存地图成功!");
            }
            catch(Exception)
            {
                MessageBox.Show("打开地图失败!");
            }
        }
        //保存地图文档
        private void SaveSXDDoc_Click(object sender, EventArgs e)
        {
            try 
            {
                m_MapLoad.OperateMapDoc(axMapControl1, axMapControl2, "SaveDoc");
              //  MessageBox.Show("保存地图成功!"); 
            }
            catch (Exception)
            {
                MessageBox.Show("保存地图失败!"); 
            }
           
        }
        //另存地图文档
        private void SaveAs_Click(object sender, EventArgs e)
        {
            try
            {
                m_MapLoad.OperateMapDoc(axMapControl1, axMapControl2, "SaveDocAs");
            }
            catch (Exception)
            {
                MessageBox.Show("另存地图失败!");
            }
        }
       //添加XYZ数据
        private void AddXYZ_Click(object sender, EventArgs e)
        {
            try
            {
                添加XYZ数据 add = new 添加XYZ数据();
                add.Show();
            }
            catch(Exception)
            {
                MessageBox.Show("添加XY数据失败!");
            }
        }
        //添加影像数据
        private void inportImage_Click(object sender, EventArgs e)
        {
            try
            {
                m_MapLoad.LoadGeoData(axMapControl1, axMapControl2);
            }
            catch (Exception)
            {
                MessageBox.Show("添加影像数据失败!");
            }
           
        }
         //添加数据
         private void AddData_Click_1(object sender, EventArgs e)
         {
             try
             {
                 添加XYZ数据 t = new 添加XYZ数据();
                 t.ShowDialog();
                // t.AddData(this.axMapControl1, m_controlsSynchronizer);
             }
             catch (Exception)
             {
                 MessageBox.Show("添加数据失败!");
             }
            
         }
        #endregion
        #region 数据编辑
         private void 地图编辑_Click(object sender, EventArgs e)
         {
            
         }


         private void 栅格图层渲染_Click_1(object sender, EventArgs e)
         {
             try
             {
                 栅格图层渲染 Raster = new 栅格图层渲染(axMapControl1, axTOCControl2);
                 Raster.ShowDialog();
             }
             catch (Exception)
             {
                 MessageBox.Show("图层渲染失败!!");
             }
         }
        #endregion
        #region 信息查询
        //按位置查询
         private void buttonItem27_Click_1(object sender, EventArgs e)
         {
             try
             {
                 frmLocationQuery LocationQuery = new frmLocationQuery(axMapControl1);
                 LocationQuery.ShowDialog();
                 frmLocationisOpen = true;
             }
             catch (Exception)
             {
                 MessageBox.Show("查询失败!");
             }
         }
        //按属性查询
         private void buttonItem34_Click_1(object sender, EventArgs e)
         {
             try
             {
                 frmAttriQuery AttriQuery = new frmAttriQuery(axMapControl1);
                 AttriQuery.ShowDialog();
                 frmAttriQueryisOpen = true;
             }
             catch (Exception)
             {
                 MessageBox.Show("查询失败!");
             }
            
         }


        #endregion
        #region 建筑管理
         private void buttonItem14_Click_1(object sender, EventArgs e)
         {
            try
            {
             建筑信息管理 buildingManger = new 建筑信息管理();
             buildingManger.ShowDialog();
            }
             catch(Exception)
            {
                 MessageBox.Show("操作失败");
             }


         }
         private void buttonItem16_Click_1(object sender, EventArgs e)
         {
             try
             {
                 学生信息窗体 student = new 学生信息窗体();
                 student.ShowDialog();
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }
             
         }
         private void buttonItem23_Click_1(object sender, EventArgs e)
         {
             try
             {
                 房产信息 RealEast = new 房产信息();
                 RealEast.ShowDialog();
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }            
         }
        #endregion
        #region 地图制图
         private void 添加文字按钮_Click_1(object sender, EventArgs e)
         {
             try
             {
                 //通过构造函数传递窗体对象
                 Title titleForm = new Title(this);
                 titleForm.Show();
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }
            
         }
         private void 添加图例按钮_Click_1(object sender, EventArgs e)
         {
             try
             {
                 m_MapSurround.AddLegend(axPageLayoutControl1);
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }
         }


         private void 添加比例尺_Click_1(object sender, EventArgs e)
         {
             try
             {
                 m_MapSurround.AddScaleBar(axPageLayoutControl1);
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }
            
         }
         private void 添加指北针_Click_1(object sender, EventArgs e)
         {
             try
             {
                 m_MapSurround.AddNorthArrow(axPageLayoutControl1);
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }
            
         }
         private void 输出JPG_Click_1(object sender, EventArgs e)
         {
             try
             {
                 m_MapSurround.Map_Export(axPageLayoutControl1, 1);
             }
             catch (Exception)
             {
                 MessageBox.Show("操作失败");
             }
            
         }
         private void 输出PNG_Click_1(object sender, EventArgs e)
         {
            
             m_MapSurround.Map_Export(axPageLayoutControl1, 2);
         }
         private void 输出BMP_Click_1(object sender, EventArgs e)
         {
             m_MapSurround.Map_Export(axPageLayoutControl1, 3);
         }
         private void 输出PDF_Click_1(object sender, EventArgs e)
         {
             m_MapSurround.Map_Export(axPageLayoutControl1, 4);
         }
         #endregion
        #region 统计分析
         private void buttonItem20_Click_1(object sender, EventArgs e)
         {
             占地面积统计 BuildingArea = new 占地面积统计();
             BuildingArea.ShowDialog();
         }
         private void 容纳人数统计_Click_1(object sender, EventArgs e)
         {


         }
         private void buttonItem22_Click_1(object sender, EventArgs e)
         {
             建筑使用情况统计 BuildingUsing = new 建筑使用情况统计();
             BuildingUsing.ShowDialog();
         }
#endregion
#region 专题地图
        
#endregion
         #region 地图相关操作
         //当主视图中的地图发生变化时,鹰眼视图中的地图也要发生变化
         private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
         {
             IMap pMap;
             pMap = axMapControl1.Map;
             for (int i = 0; i < pMap.LayerCount; i++)
             {
                 axMapControl2.AddLayer(pMap.get_Layer(i));
             }
             //使鹰眼视图中显示加载地图的全图
             axMapControl2.Extent = axMapControl2.FullExtent;


         }
         //在鹰眼视图中移动红色矩形框时,主视图中的地图范围、位置要发生相应变化
         private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
         {
             // 利用鼠标左键移动鹰眼视图中的红色矩形框,主视图中显示的范围要进行局部刷新
             //利用鼠标右键在鹰眼视图中改变红色矩形框的大小,主视图中显示的地图数据也要进行刷新
             if (e.button == 1)  //探测鼠标左键
             {
                 IPoint pPt = new PointClass();
                 pPt.X = e.mapX;
                 pPt.Y = e.mapY;
                 IEnvelope pEnvelop = axMapControl1.Extent as IEnvelope;
                 pEnvelop.CenterAt(pPt);
                 axMapControl1.Extent = pEnvelop;
                 axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
             }
             else if (e.button == 2)  //鼠标右键按下
             {
                 IEnvelope pEnvelop = axMapControl2.TrackRectangle();
                 axMapControl1.Extent = pEnvelop;
                 axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
             }
         }
         //当主视图中的显示范围发生变化时,触发控件的OnExtentUpdated事件
         private void axMapControl2_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)
         {
             if (e.button != 1)
                 return;
             IPoint pPt = new PointClass();
             pPt.X = e.mapX;
             pPt.Y = e.mapY;
             axMapControl1.CenterAt(pPt);
             axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         }
         private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)
         {
             //绘制鹰眼图中红色矩形框
             IGraphicsContainer pGraphicsContainer = axMapControl2.Map as IGraphicsContainer;
             IActiveView PAv = pGraphicsContainer as IActiveView;
             //绘制前清除axMapControl2中的任何图形元素
             pGraphicsContainer.DeleteAllElements();
             IRectangleElement pRecElement = new RectangleElementClass();
             IElement pEle = pRecElement as IElement;
             IEnvelope pEnv;
             pEnv = e.newEnvelope as IEnvelope;
             pEle.Geometry = pEnv;
             //设置颜色
             IRgbColor pColor = new RgbColorClass();
             pColor.Red = 200;
             pColor.Green = 0;
             pColor.Blue = 0;
             //产生一个线符号对象
             ILineSymbol pLineSymbol = new SimpleLineSymbolClass();
             pLineSymbol.Width = 2;
             pLineSymbol.Color = pColor;
             //设置填充符号的属性
             IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
             //设置透明颜色
             pColor.Transparency = 0;
             pFillSymbol.Color = pColor;
             pFillSymbol.Outline = pLineSymbol;
             IFillShapeElement pFillShapeElement = pRecElement as IFillShapeElement;
             pFillShapeElement.Symbol = pFillSymbol;
             pGraphicsContainer.AddElement(pEle, 0);
             axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);


         }    
         #endregion


        //地图上单击--漫游
         private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
         {
            if (e.button == 1)
           {
             // contextMenuStrip2.Show(axMapControl1, e.x, e.y);
                 IFeatureLayer pFL;
                 IFeatureSelection pFeatureSelection;
                 IEnvelope pEnv;
                 IGeometry pGeometry;
                 ISpatialFilter pSpatialFilter;
                 ISelectionSet pSelectionSet;
                 IEnumIDs pEnumIDs;
                 IFeature pFeature;
                 string picpath;
                 //用于查询的矩形(相当于点的缓冲区,这样比生成缓冲区节省资源),
                 //envelope的大小根据实际情况设定,以方便使用为准
                 pEnv = new EnvelopeClass();
                 pEnv.PutCoords(e.mapX - 200, e.mapY - 200, e.mapX + 200, e.mapY + 200);
                 pGeometry = pEnv as IGeometry;
                 pSpatialFilter = new SpatialFilterClass();
                 pSpatialFilter.Geometry = pGeometry;
                 pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;


                 //运用singleton模式设计窗体,只允许存在一个ShowAttributeTable实例
                 //ShowAttributeTable frmShowAttribute = ShowAttributeTable.CreateForm();
                 风景 frmShowAttribute = 风景.CreatForm();
                 frmShowAttribute.Show();
                 frmShowAttribute.AttributeTreeView.Nodes.Clear();//首先清除上次结果
                 frmShowAttribute.AttributeTreeView.ShowLines = true;
                 frmShowAttribute.AttributeTreeView.ShowPlusMinus = true;


                 TreeNode rootNode = new TreeNode();
                 rootNode.Text = "属性信息 ";
                 //                rootNode.ImageIndex


                 Font font = new Font("黑体", 10);
                 rootNode.NodeFont = font;
                 //添加根节点“属性信息”
                 frmShowAttribute.AttributeTreeView.Nodes.Add(rootNode);
                 //没有必要将地图上的高亮选择清除,因为下面对每个图层的选择都用esriSelectionResultNew,会自动清除上次的高亮显示,
                 //而不同图层之间的高亮选择不会有任何影响,因为IFeatureSelection接口的一切属性和方法都是针对一个图层
                 //                this.axMapControl1.Map.ClearSelection();
                 for (int i = 0; i < this.axMapControl1.LayerCount; i++)
                 {
                     pFL = this.axMapControl1.get_Layer(i) as IFeatureLayer;
                     if (pFL.Visible && pFL.Selectable)
                     {
                         pFeatureSelection = pFL as IFeatureSelection;
                         //选择之前先清除,这是个好习惯(除非是用Add方式)
                         pFeatureSelection.Clear();
                         pFeatureSelection.SelectFeatures(pSpatialFilter, esriSelectionResultEnum.esriSelectionResultNew, true);
                         pSelectionSet = pFeatureSelection.SelectionSet;
                         //如果选择集内有Feature
                         if (pSelectionSet.Count > 0)
                         {
                             //构建图层节点并添加到根节点
                             TreeNode layerNameNode = new TreeNode();
                             layerNameNode.ForeColor = Color.Green;
                             layerNameNode.Text = "图层名:" + pFL.Name;
                             rootNode.Nodes.Add(layerNameNode);


                             //通过pEnumIDs获得该SelectionSet中的Feature的id值,再用FeatureClass.GetFeature()方法获得该Feature对象
                             //这里为了学习新接口而使用了IEnumIDs,为了获得SelectionSet中的Feature,可以使用其Search()方法
                             //获得ICursor,再使用循环获得Feature,如下注释选定行
                             //                            pSelectionSet.Search(null,false,out pCursor);
                             //                            pRow = pCursor.NextRow();
                             //                            if(pRow!=null)
                             //                            {
                             //                            }
                             pEnumIDs = pSelectionSet.IDs;
                             long id = pEnumIDs.Next();
                             while (id != -1)
                             {
                                 pFeature = pFL.FeatureClass.GetFeature((int)id);
                                 for (int j = 0; j < pFeature.Fields.FieldCount; j++)
                                 {
                                     if (j != 1)
                                     {
                                         //构建字段值节点并添加到图层节点下
                                         TreeNode fieldInfoNode = new TreeNode();
                                         fieldInfoNode.Text = pFeature.Fields.get_Field(j).Name + ": " + pFeature.get_Value(j).ToString();
                                         layerNameNode.Nodes.Add(fieldInfoNode);
                                         if (pFeature.Fields.get_Field(j).Name == "picture")
                                         {
                                             picpath = pFeature.get_Value(j).ToString();
                                             frmShowAttribute.picture(picpath);
                                         }
                                     }
                                     //如果是shape字段就显示GeometryType
                                     else
                                     {
                                         TreeNode fieldInfoNode = new TreeNode();
                                         fieldInfoNode.Text = pFeature.Fields.get_Field(j).Name + ": " + pFeature.Shape.GeometryType.ToString();
                                         layerNameNode.Nodes.Add(fieldInfoNode);
                                     }
                                     frmShowAttribute.AttributeTreeView.ExpandAll();
                                 }
                                 id = pEnumIDs.Next();
                             }
                         }
                     }
                 }
             }
         }
        //复制到输出页面设置
        private void copyToPageLayout()
        {
            IObjectCopy objectCopy = new ObjectCopyClass();
            object copyFromMap = axMapControl1.Map;
            object copyMap = objectCopy.Copy(copyFromMap);
            object copyToMap = axPageLayoutControl1.ActiveView.FocusMap;
            objectCopy.Overwrite(copyMap, ref copyToMap);
        }
        //MapControl和PageLayoutControl同步显示
        private void axMapControl1_OnAfterScreenDraw(object sender, IMapControlEvents2_OnAfterScreenDrawEvent e)
        {
            IActiveView activeView = (IActiveView)axPageLayoutControl1.ActiveView.FocusMap;
            IDisplayTransformation displayTransformation = activeView.ScreenDisplay.DisplayTransformation;
            displayTransformation.VisibleBounds = axMapControl1.Extent;
            axPageLayoutControl1.ActiveView.Refresh();
            copyToPageLayout();
        }




       
         private void axPageLayoutControl1_OnMouseDown(object sender, IPageLayoutControlEvents_OnMouseDownEvent e)
         {
             m_MapSurround.AddTitle(axPageLayoutControl1, e, strTitle, strColor, strFont);            
         }
         //TOCControl控件的OnMouseDown事件,获得需要被调整的图层
        /// 下面函数有问题
         private void axTOCControl2_OnMouseDown_1(object sender, ITOCControlEvents_OnMouseDownEvent e)
        {
            if (e.button == 2)
            {
                axTOCControl2.HitTest(e.x, e.y, ref toccItem, ref pBasicMap, ref p_Layer, ref unk, ref data);
                contextMenuStrip1.Show(axTOCControl2, e.x, e.y);
            }
        }
        //TOCControl控件的OnMouseUp事件,获得目标图层及索引,控制图层的可见性
        //并实现axMapControl中视图显示的索引的变化,并更新TOCControl控件中的显示顺序
         private void axTOCControl2_OnMouseUp_1(object sender, ITOCControlEvents_OnMouseUpEvent e)
        {
            if (e.button == 1)
            {
                esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;
                IBasicMap map = null;
                ILayer layer = null;
                object other = null;
                object index = null;


                axTOCControl1.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);
                IMap pMap = this.axMapControl1.ActiveView.FocusMap;
                if (item == esriTOCControlItem.esriTOCControlItemLayer || layer != null)
                {
                    if (pMoveLayer != null)
                    {
                        ILayer pTempLayer;
                        for (int i = 0; i < pMap.LayerCount; i++)
                        {
                            pTempLayer = pMap.get_Layer(i);
                            if (pTempLayer == layer)
                            {
                                toIndex = i;
                            }
                        }
                        pMap.MoveLayer(pMoveLayer, toIndex);
                        axMapControl1.ActiveView.Refresh();
                        axTOCControl2.Update();
                    }
                }
            }
        }
 
        private void 打开属性表ToolStripMenuItem_Click(object sender, EventArgs e)
        { 
                AttributeTableFrm frm = new AttributeTableFrm(p_Layer);
                frm.CreateAttributeTable(p_Layer);
                frm.frm1 = this;
                frm.ShowDialog();
        }
        #region  专题图制作
        private void 简单专题图_Click(object sender, EventArgs e)
        {
            try
            {
                专题图 ztt = new 专题图();
                ztt.专题图1(axMapControl1);
            }
            catch (Exception)
            {
                MessageBox.Show("简单专题图制作失败!");
            }
        }


        private void 柱状图_Click(object sender, EventArgs e)
        {
           try
            {
                专题图 ztt = new 专题图();
                ztt.柱状专题图(axMapControl1);
           }
          catch (Exception)
          {
               MessageBox.Show("柱状专题图制作失败!");
            }
           
        }


        private void 点状图_Click(object sender, EventArgs e)
        {
            
            try
            {
                专题图 ztt = new 专题图();
                ztt.点状专题图(axMapControl1);
            }
            catch (Exception)
            {
                MessageBox.Show("点状专题图制作失败!");
            }
        }
        #endregion


        private void 开始编辑ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                edit1 pEdit = new edit1();
                IFeatureLayer m_curFeatureLayer = p_Layer as IFeatureLayer;
                pEdit.Getfeature(m_curFeatureLayer);
                pEdit.ShowDialog();
                this.axMapControl1.ActiveView.Refresh();
            }
            catch (Exception)
            {
                MessageBox.Show("地图编辑失败!");
            }
        }


        private void axPageLayoutControl1_TabIndexChanged(object sender, EventArgs e)
        {
            if (this.tabControl1.SelectedTabIndex == 0)
            {
                //激活MapControl 
                m_controlsSynchronizer.ActivateMap();
            }
            else
            {
                //激活PageLayoutControl 
                m_controlsSynchronizer.ActivatePageLayout();
            }
        }


        private void tabItem3_Click(object sender, EventArgs e)
        {
            axToolbarControl2.SetBuddyControl(axPageLayoutControl1);
        }


        private void tabItem1_Click(object sender, EventArgs e)
        {
            axToolbarControl2.SetBuddyControl(axMapControl1);
        }


        private void 查看属性_Click(object sender, EventArgs e)
        {


        }


     
     }




    public partial class Title : Form
    {
        public Form1 f1;
        public Title(Form1 f)
        {
            InitializeComponent();
            f1 = f;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            FontDialog fontDialog = new FontDialog();
            fontDialog.ShowColor = true;
            fontDialog.AllowScriptChange = false;
            if (fontDialog.ShowDialog() == DialogResult.OK)
            {
                richTextBox1.ForeColor = fontDialog.Color;
                richTextBox1.SelectionFont = fontDialog.Font;
            }
        }


        private void button2_Click(object sender, EventArgs e)
        {
            f1.StrTitle = richTextBox1.Text;
            f1.StrFont = richTextBox1.SelectionFont;
            f1.StrColor = richTextBox1.ForeColor;
            this.Close();
            f1.Refresh();
        }
    }


    
}
           

继续阅读