随笔分类 - .NET
摘要:此次分享的是github上的一个开源小工具:excel2json,用于把Excel表转换成json对象,并保存到一个文本文件。 项目地址:https://github.com/neil3d/excel2json 可执行版本下载:https://github.com/neil3d/excel2json
阅读全文
摘要:用VS2012创建ARCGIS插件项目时,提示“未找到与约束ContractName...匹配的导出”,此前一直都是正常的额经查,发现是近期系统相关更新导致,解决办法有两种途径:一是删除近期更新的相关补丁。二是安装VS2012更新补丁KB2781514
阅读全文
摘要:微软Office Word本身已经提供了另存为PDF文档功能,对于少量文档,手工使用该方式进行Word转换为PDF尚可,一旦需要处理大量的文档,可能就显得有些捉襟见肘了。不过对于已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF了。源码奉上:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.IO;using System.Text;using System.Thr
阅读全文
摘要:说来应该有多重方式可以实现PictureBox的图像重绘,本文针对一种应用情形,给出一种简便易用的方法来实现PictureBox的图像重绘。应用场景与实现方式应用场景:在开发一个图像切割程序,需要对图像切割方式做一直直观的展示。比如将一张尺寸为2048*1024的原图按8*4切割方式切割为尺寸为256*256的切片,在原图上绘制分割线来表示。实现代码:① 在空白背景上绘图Bitmap bitmap = new Bitmap(2048, 1024);Graphics graphic = Graphics.FromImage(bitmap);//此处使用GDI+在graphic对象上绘图...gr
阅读全文
摘要:我最近在用开源GIS组件SharpMap做开发时候,经常要处理这样的问题:比如现在已获得Shapefile主文件(*.shp)的文件路径如"F:\\China400\\Sdzzd_P.shp",然后要根据它获取其索引文件(*.shx)和dDASE表文件(*.dbf)的文件路径,之前我一直采用自己编写的方法来处理这个字符串,直到刚刚查阅MSDN的时间才发现之前的方法是多么愚蠢,其实微软已经为开发人员做好了这一切,在.NET中,System.IO.Path.ChangeExtension方法即可很方便的处理这个问题。示例using System.IO;class Program
阅读全文
摘要:在使用TabControl控件时,希望隐藏其中某个选项卡(即TabPage)。TabPage类明明提供了一个Hide方法,用在代码中却没有任何效果,甚是奇怪。无奈之余,只好考虑另辟途径。方法一设置该TabPage的父容器为null 即可,如TabPage.Parent = null 。如需显示该TabPage,设置其父容器为对应的TabControl即可。方法二利用TabControl的TabPages属性,它是TabPage对象的集合,调用集合的Remove(TabControl.TabPages.Remove(TabPage))和Add(TabControl.TabPages.Add(Ta
阅读全文
摘要:.NET中提供了一个SqlDataSourceEnumerator类,使用该类可以很方便的获取本地网络中的所有的可用的SQL Server实例的详细信息。该类位于System.Data.Sql命名空间下。 SqlDataSourceEnumerator类并没用提供具体的构造函数,但它提供了一个公共/静态属性——Instance,用于检索SqlDataSourceEnumerator类的实例。检索到其实例之后,便可调用其GetDataSources方法,该方法返回包含本地网络中所有可用服务器信息的DataTable。 使用GetDataSources方法所返回的DataTable包含以下...
阅读全文
摘要:试想一下,在代码中如何给调用者提示所调用的方法并不是最优的,它可以被一个更好的方法所替代?通常来说,你可以使用Obsolete特性来标记该方法是一个被荒弃的方法。本文讲述如何使用Obsolete特性及其相关内容。Obsolete attribute位于System命名空间,它是一个attribute类型,以Obsolete或者ObsoleteAttribute来指定attribute类型都是允许的,在编译时,会自动添加上 “Attribute” 后缀。指定一个attribute,用方括号[]围起所期望的attribute,置于所要修饰的方法、接口、属性、委托、事件等语言元素之前。对于Obsol
阅读全文
摘要:ArrayList就是实现了IList, ICollection, IEnumerable, ICloneable这几个接口的动态数组。即使.NetFramwork提供了一些更耐用更受欢迎的新的类,ArrayList仍然十分有用。下面是一些在C#中使用ArrayList的实例,一起看看其基本用法和一些高级用法。添加元素 在使用ArrayList的每个程序中基本都会用到其Add方法。该方法追加一个元素对象至ArrayList的末端。在内存允许的情况下,你可以持续的向这个集合中添加元素,其元素以堆的形式进行存储。见下示例。 ArrayList类中元素的存储为Object类型,这意味着,Ar...
阅读全文
摘要:自学的过程中,一直没跨过委托这个槛儿,今天刚好有点空,拿起书对照着MSDN再看了一遍。简要记录一二,以供后续温习之便。 MSDN官方原文:委托是一种定义方法签名(由返回类型和参数组成)的类型,可以与具有兼容签名的任何方法关联。 可以通过委托调用方法。委托用于将方法作为参数传递给其他方法。委托入门 使用委托的规则如下:首先使用 delegate 关键字声明一个委托类型,指定其返回类型和参数。通过 new 操作符,可以使用委托声明来创建一个委托类型的实例。在创建委托类型的实例时,目标方法必须与委托声明的签名精确匹配。 下面先给出一个数组冒泡排序的示例代码,后面对此进行改造以讲解如何使用委...
阅读全文
摘要:ref ref 关键字使得参数按引用传递,通俗点讲就是传递参数的地址,因此在方法中对参数所做的任何更改都反映在该变量中。值得注意的是传递到 ref 参数的参数必须先进行初始化。class RefExample{ static void Method(ref int i) { i = 44; } static void Main() { int val = 0; Method(ref val); // val is now 44 }} 按引用传递值类型(如上所示)是有用的,但是ref对于传递引用类型也...
阅读全文
摘要:关于本文本文演示如何创建一个简单的命令,实现缩放至所选图层范围的功能。该命令继承自ESRI公司的ADF里的BaseCommand类。以下是详细实现步骤。注:本文演示环境 VS2020 & C# & ArcGIS 10.0 本文PDF下载创建一个类库开启VS2010,以Visual C# >> ArcGIS >>Extending ArcObjects 下的Class Library (ArcMap) 为模板创建一个新类库项目,将该项目命名为CmdZoomToLayer,选择合适的存储位置,单击确定。如下图所示。添加引用为该项目添加所需的ESRI对象库引用
阅读全文
摘要:本文介绍如何使用Web制图应用程序模板在无需编辑任何代码的情况下快速建立ArcGIS ServerWeb制图应用程序。Web制图应用程序模板是与Visual Studio集成于一体的。 前期准备工作:①软件安装与配置;② 制作一幅地图并发布到ArcGIS Server。 前期准备工作本文都不做详述,本文创建了China_400.mxd地图文档发布至ArcGIS Server。 使用模板建立Web制图应用程序 启动Visual Studio 2010,依次选择文件>新建>网站,按下图所示进行配置。 默认的,在VS右侧会打开解决方案资源管理器和属性窗口。解决方案资源管理器窗口下列出了.
阅读全文
摘要:利用List或者数组存储数据,希望以此改善你的程序,可以对List或者数组的BinarySearch方法进行评估。如果是一个可变数量的元素集合,Binary搜索是针对集合中的值进行排序的一种“令人吃惊的”算法,其算法复杂度为O(log n),与C#中其它排序方法相比,它具备更高的效率。 示例: 下面是一个对List类型使用BinarySearch方法的示例。你必须为List中所使用的类型提供一个值,这样该方法才能通过编译。程序中通常使用字符串,这里也就使用string类型。BinarySearch方法示例代码: 1 using System; 2 using System.Collectio.
阅读全文
摘要:在C#代码中使用一系列字符串(strings)并需要为其创建一个列表时,List<string>泛型类是一个用于存储一系列字符串(strings)的极其优秀的解决办法。下面一起有一些List<string>泛型类的示例,一起来看看吧。 List示例 下面是一个使用C#创建一个新的一系列字符串的列表的示例,利用foreach语句循环使用其每一个字符串。请注意在代码片段的顶部添加所需的命名空间:“using System.Collections.Generic;”,List是该命名空间里的一个泛型类型。List<string>示例代码: 1 using Syst
阅读全文
摘要:默认情况下,ListBox控件中的项的高度是12px。一般的,窗体上的文字为9pt或更大字体,这样一来,Listbox控件中的项与项之间几乎没什么间隙,看起来密密麻麻一片,界面效果十分不友好。可以通过修改控件的DrawMode和ItemHeight属性,然后处理其DrawItem事件来处理该问题。 1、修改ListBox控件的DrawMode属性为OwnerDrawFixed或者OwnerDrawVariable 2、修改ListBox控件的ItemHeight属性为20 3、处理ListBox控件的DrawItem事件1 private void listBox_DrawItem(obje.
阅读全文
摘要:在ArcGIS 10系列中,安装好ArcGIS Desktop和ArcObject SDK,获取软件授权就可以进行ArcObject开发了。在这个新版本的开发中,许可方式发生了一定的变化,此文对此做个讲述。许可初始化 在ArcGIS 9.3中,对于所有单机应用程序(stand-alone applications),在运行ArcObjects组件之前,对其许可进行初始化是必须的。完成ArcGIS许可检查的APIs是在ESRI.ArcGIS.esriSystem.AoInitialize类中。传统的,许可检查可通过以下方法的一种来完成:直接式——编写AoInitialize代码,一般来说,可以.
阅读全文
摘要:ArcGIS中,每一个地理处理工具箱都是以一个托管程序集来表示的。这些托管程序集位于ArcGIS安装路径的\Dotnet\Toolboxes文件夹下。每一个工具箱程序集里都有很多的类,用不同的类来表示标准标准ArcGIS地理处理工具箱里对应的地理处理工具。在应用程序开发过程中,可以使用这些程序集中的类来建立并通过ArcEngine中的geoprocessor这个类来运行地理处理工具。 建立GP工具 建立一个地理处理类的实例,设定它的参数内容来指定该工具的输入项。必须保证所有被标记为规定参数的参数项都被正确的指定,除此之外,也可以指定被标记为可选参数的参数项。为了简化操作,每一个类都重载有一个.
阅读全文
摘要:ADO.NET概览在应用程序开发过程中,大多数时候都需要与数据库进行交互。在.NET问世之前,常用的有ODBC、OLEDB和ADO等数据访问技术。而在.NET下,Microsoft推荐使用ADO.NET这种全新的数据处理方式。ADO.NET包括两个核心组件:数据提供程序和数据集。数据提供程序用于连接到数据源,支持数据访问和处理。数据集支持数据以关联的方式,在断开连接的情况下独立的缓存数据,根据需要更新数据源。每个数据源提供程序都有各自的命名空间,并且都把各自所连接的数据源类型作为其前缀。如System.Data.SqlClient命名空间是SQLServer的.NETFramework数据提供
阅读全文
摘要:ArcEngine开发——右键菜单的设计与实现利用ArcGIS Engine开发自定义GIS应用程序中,一般有两种方式来建立右键菜单。一是利用开发工具自带的右键菜单控件,如Visual Studio中的ContextMenuStrip控件;二是利用ArcGIS Engine封装好的IToolbarMenu接口。相比较而言,前者实现起来较简单,但后者使程序具有更好的面向对象性,也更利于扩展,在大型系统中,使用该方法是较好的选择。本文详细讲述如何利用IToolbarMenu接口实现右键菜单功能。设计程序主界面如下图所示。基本浏览功能以及获取TocControl控件中的图层信息详见ArcEngine
阅读全文

浙公网安备 33010602011771号