⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controls.txt

📁 一些常用控件的简单介绍以及一些简单的应用问题
💻 TXT
📖 第 1 页 / 共 4 页
字号:

         Microsoft.Win32.RegistryKey regKey = 

             Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(fullKey, true);

         if (regKey != null)

         {

             regKey.DeleteSubKey("{B284D891-22EE-4F12-A0A9-B1DDED9197F4}");

         }

     }

     #endregion

23.     生成工程。

24.     在方案开始创建的Visual Studio .NET “Windows应用程序”项目中,增加地图导航命令代码的后面增加以下代码。

     private void Form1_Load(object sender, System.EventArgs e)

     {

         // 前面是命令导航代码……           

         // 添加自定义日期工具

         progID = "CSharpDotNETCommands.AddDateTool";

         axToolbarControl1.AddItem(progID, -1, -1, true, 0, 

             esriCommandStyles.esriCommandStyleIconAndText);

// 后面是ToolbarMenu相关代码……

}

25.     生成并运行应用程序,使用添加日期工具向PageLayoutControl上增加一个包含当天日期的文本元素。


(十一) 自定义ToolbarControl
同在Form_Load事件中向ToolbarControl控件增加ArcGIS Engine命令和工具一样,你也可以使用定制对话框和自定义ToolbarControl的方式添加命令和工具。要实现它,就要将ToolbarControl置为定制模式并显示定制对话框。

1.       向类中增加下列成员变量:

……

     private ITransformEvents_VisibleBoundsUpdatedEventHandler

         visBoundsUpdatedE;          // PageLayoutControl的焦点图事件

 

     private ICustomizeDialog m_CustomizeDialog = new 

         CustomizeDialogClass(); // CurtomizeDialog被ToolbarControl使用

     private ICustomizeDialogEvents_OnStartDialogEventHandler 

         startDialogE; // CustomizeDialog启动事件

     private ICustomizeDialogEvents_OnCloseDialogEventHandler 

         closeDialogE; // CustomizeDialog关闭事件

……

注:Visual Studio .NET提供了当程序集对COM interop开放时执行的函数在系统中被注册和取消注册的功能。这就允许你在定制对话框可能找到的组件目录中注册你自己的类。

2.       创建一个叫CreateCustomizeDialog的新函数,这个函数是你通过增加如下代码创建自定义对话框的地方。

     private void CreateCustomizeDialog()

     {

         // 设置自定义对话框事件

         startDialogE = new 

             ICustomizeDialogEvents_OnStartDialogEventHandler(OnStartDialog);

         ((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnStartDialog += 

             startDialogE;

         closeDialogE = new 

             ICustomizeDialogEvents_OnCloseDialogEventHandler(OnCloseDialog);

         ((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnCloseDialog += 

             closeDialogE;

 

         // 设置标题

         m_CustomizeDialog.DialogTitle = "自定义ToolbarControl项目";

         // 显示“从文件添加”按钮

         m_CustomizeDialog.ShowAddFromFile = true;

         // 设置将增加新项目的ToolbarControl

         m_CustomizeDialog.SetDoubleClickDestination(axToolbarControl1);

}

注:设置ComVisible属性为false确保此方法不能被COM客户端直接调用。当程序集通过COM注册时,它不影响被调用的方法。

3.       在Form_Load事件中调用CreateOverviewSymbol子过程以前调用CreateCustomizeDialog函数。

     private void Form1_Load(object sender, System.EventArgs e)

     {

         // 当缩放时禁止重绘

         this.SetStyle(ControlStyles.EnableNotifyMessage, true);

 

         // 为ToolbarControl创建自定义对话框

CreateCustomizeDialog();

……

}

4.       在窗体上增加一个名叫“chkCustomize”的复选框,并将标题命名为“定制”。

5.       在设计模式显示窗体并从属性窗口选择chkCustomize控件,显示chkCustomize事件。在CheckedChanged事件上双击向代码窗口增加相应的事件处理。

6.       向chkCustomize_CheckedChanged事件中增加下列代码。

     private void chkCustomize_CheckedChanged(object sender, System.EventArgs e)

     {

         // 显示或隐藏自定义对话框

         if (chkCustomize.Checked == false )

         {

             m_CustomizeDialog.CloseDialog();

             axToolbarControl1.Customize = false;

         }

         else

         {

             m_CustomizeDialog.StartDialog(axToolbarControl1.hWnd);

             axToolbarControl1.Customize = true;

         }

}

7.       增加下以下OnStartDialog和OnCloseDialog事件处理函数。这些函数将与自定义对话框打开或关闭时触发的事件紧密连接。

     private void OnStartDialog()

     {

            axToolbarControl1.Customize = true;      

     }

 

     private void OnCloseDialog()

     {

         axToolbarControl1.Customize = false;

         chkCustomize.Checked = false;

}

8.       生成并运行应用程序,选择定制复选框使ToolbarControl进入自定义模式,并打开自定义对话框。

9.       在自定义ToolbarControl项目对话框中的左边目录(Categories)列表中选择“Graphic Element”项,然后在右边的命令(Commands)列表中“Select Elements”项上双击将其加入到ToolbarControl工具栏中。右键点击ToolbarControl上的任何一个项目,你可以调整它的显示样式和组合特性。


10.     结束定制应用。使用选择工具移动包含日期的文本元素。


六、
部署
要将应用程序成功地部署到另一台机器上,必须为应用程序配置协议。首先,它必须检查产品协议是否有效,其次,它必须初始化协议。如果协议配置不正确有,应用程序将不能运行。

注:当采用ESRI ArcObjects开发独立运行的程序时,应用程序负责检查并配置协议选项。它通过实现CoClass AoInitialize和IAoInitialize接口来支持协议配置。应用程序运行时,在任何ESRI ArcObject功能被访问之前协议初始化必须先被执行。如果初始化失败将导致应用程序错误。

1.       向类中增加下列成员变量。

public class Form1 : System.Windows.Forms.Form

    {

        private ESRI.ArcGIS.MapControl.AxMapControl axMapControl1;

        private ESRI.ArcGIS.PageLayoutControl.AxPageLayoutControl axPageLayoutControl1;

        private ESRI.ArcGIS.TOCControl.AxTOCControl axTOCControl1;

        private ESRI.ArcGIS.ToolbarControl.AxToolbarControl axToolbarControl1;

 

        // 应用初始化对象

        private IAoInitialize m_AoInitialize = new AoInitializeClass();

 

// 后面是弹出菜单变量声明代码

……

2.       在Form_Load事件的最开始位置增加下列代码。

     private void Form1_Load(object sender, System.EventArgs e)

     {

         // 创建新的AoInitialize对象

         if ( m_AoInitialize == null)

         {

             System.Windows.Forms.MessageBox.Show(

                 "初始化失败,程序不能运行!");

             this.Close();

         }

 

         // 判断产品是否有效

         esriLicenseStatus licenseStatus = (esriLicenseStatus)

             m_AoInitialize.IsProductCodeAvailable(

             esriLicenseProductCode.esriLicenseProductCodeEngine);

         if (licenseStatus == esriLicenseStatus.esriLicenseAvailable )

         {

             licenseStatus = (esriLicenseStatus)

                 m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

             if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut )

             {

                 System.Windows.Forms.MessageBox.Show(

                     "初始化失败,应用程序不能运行!");

                 this.Close();

             }

         }

         else

         {

             System.Windows.Forms.MessageBox.Show(

                 "ArcGIS Engine产品无效,此程序不能运行!");

             this.Close();

         }

 

         // 当缩放时禁止重绘

this.SetStyle(ControlStyles.EnableNotifyMessage, true);

// 后面是创建自定义对话框的代码……

……

}

3.       在设计模式显示窗体并在属性窗口选择Form1,显示窗体事件。在Closing事件上双击向代码窗口增加事件处理代码。

4.       在Form_Closing事件中增加以下代码:

     private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

     {

         // 释放COM对象并关闭AoInitialize对象

         ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();

         m_AoInitialize.Shutdown();

}

5.       在Release模式下生成项目和解决方案。

要将应用程序成功地部署到用户机器上:

l   要将应用程序的可执行文件和包含自定义命令的动态链接库DLL发布到用户机器上。程序集注册工具(RegAsm.exe)必须被用来向注册表增加关于自定义类的信息。

l   用户机器上需要安装有ArcGIS Engine运行时库和标准ArcGIS Engine协议。

l   客户机上需要安装Microsoft .NET Framework 1.1。

七、
附加资源
下列资源可以帮助你理解和应用在本方案中在在的概念和技术。

l   在ArcGIS Engine开发工具包中包含了其他可用的文档:ArcGIS开发帮助,组件帮助,对象模型图表和适合于初学者的样例程序。

l   ArcGIS开发在线——一个Web站点,提供了最新的ArcGIS开发信息,包括程序样例和技术文档。请访问http://arcgisdeveloperonline.esri.com/

l   ESRI在线讨论组——Web站点,从其他ArcGIS开发者提供无偿援助。请访问http://support.esri.com/并点击用户论坛页签。

l   微软Visual Studio .NET开发环境中的文档。

发表于 @ 2008年04月18日 16:44:00|评论(0)|编辑

新一篇: SOA概览 | 旧一篇: 告诉你最真实的招聘潜规则

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -