




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
gis开发与应用基于arcengine方法,花利忠2011-10-12,6-2,第三章地图显示,3.1第一个gis地图显示程序3.2mapcontrol控件3.3加载图层3.4图层控制,3.1第一个gis地图显示程序,主要使用mapcontrol、toolbarcontrol、toccontrol三个控件建立起基本的桌面gis应用程序框架。最终成果预览:,在不写任何代码的情况下,创建一个地图浏览小程序,打开mxd地图文档,对地图进行缩放,漫游,点击查询属性等。1.新建项目启动vs2008,选择“文件|新建|项目”,在项目类型中选择visualc#;选择windows应用程序模板,输入名称“mapviewer”,然后点击浏览按钮指定一个存放工程文件的路径。该工程会自动创建一个名称为form1的窗体。在窗体上点击鼠标右键选择“属性”,在右边的属性列表中找到“text”属性,输入“mapviewer”。窗体的标题变化为mapviewer。,2添加控件,拖动窗体右下角,使窗体变大,点击左侧的“工具箱”.在弹出的工具箱中找到“arcgiswindowsforms”选项卡,点击选项卡前面的加号,展开该选项卡,依次双击“toolbarcontrol”、“toccontrol”、“mapcontrol”、“licensecontrol”。,在form1窗体界面上使用鼠标拖动各个控件。设置toolbarcontrol,toccontrol和mapcontrol三个控件的dock属性。提示:dock属性设置控件的靠边方式。定义在调整控件的父控件大小时如何自动调整控件的大小。窗体顶部是工具栏,左侧是图层列表,主工作区是地图控件。toolbarcontrol.dock=top,toccontrol.dock=leftmapcontrol.dock=fill,3控件绑定,上述添加的控件只是单独存在,而程序需要各控件间协同工作,因此要进行控件绑定。toolbarcontrol和toccontrol不能独立于应用程序中,必须与其他mapcontrol或pagelayoutcontrol绑定,否则无法显示图层信息。设置:toolbarcontrol控件属性菜单:点击general选项卡,buddy属性为axmapcontrol1(工具条和图层控件与地图控件关联);右键点击toccontrol,选择属性菜单。点击general选项卡,设置buddy属性为axmapcontrol1(toccontrol和图层控件与地图控件关联)axtoolbarcontrol1.setbuddycontrol(axmapcontrol1);,4给控件添加工具,右击toolbarcontrol,选择“属性|items”,点击add;选择commands选项卡中generic,双击open工具将相应工具添加到工具条;选mapinquiry和mapnavigation,添加identify,zoomin,zoomout等工具常见工具:generic(open、saveas、redo、undo);导航工具mapnavigation;查询工具mapinquiry;选择工具featureselection,5许可设置:右键点击licensecontrol,点击属性菜单。浏览弹出的对话框,其中arcgisengine已经选中,如果需要其它扩展模块的许可,可以在右侧选中对应的复选框,点击确定按钮。6编译运行,程序修改添加新控件,除使用mapcontrol、toolbarcontrol、toccontrol三个控件外,新增控件拆分器控件splitcontainerpagelayoutcontroltabcontrol控件tabpages控件最终成果预览,拆分器控件splitcontainer,splitcontainer含有splitter拆分条的容器,包含两个面板容器panel1,panel2,可以移动拆分条,对面板大小进行控制。当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的。另外,还可以嵌套多个splitcontainer控件,并且第二个splitcontainer控件可以水平放置,从而产生上面板和下面板。orientation属性决定拆分器的方向,而不是决定控件本身的方向。因此,当splitcontainer.orientation=vertical时,拆分器将垂直放置,从而产生左面板和右面板。splitcontainer.orientation=horizontal,拆分器水平放置,产生上面板和下面板。issplitterfixed属性*确定拆分器是否可以通过键盘或鼠标进行移动。控件默认情况下splitcontainer.issplitterfixed=false,可通过键盘键盘或鼠标来访问。,tabcontrol控件和tabpages控件,tabcontrol允许把相关的组件组合到一系列tab页面上。tabcontrol管理tabpages集合。控制tabcontrol外观的属性。appearance属性使用tabappearance枚举确定tab的外观,其值是flatbuttons、buttons或normal。multiline属性的值是一个布尔值,确定是否显示多行tab。如果multiline属性设置为false,而有多个tab不能一次显示出来,就提供一组箭头,允许用户滚动查看剩余的tab。tabpage控件是一个显示页面的标签页的容器控件,用于放置其他控件。工具箱双击tabcontrol时,显示一个已添加了两个tabpage的控件,visualstudio.net中的设计器使用集合编辑器给tabcontrol控件添加tabpage控件。在添加每个页面时都可以设置各种属性。接着把其他子控件拖放到每个tabpage控件上。tabpage的text属性是在tab上显示的内容。,把鼠标移动到该控件上面,在控件的右上角会出现一个带三角形的小按钮。单击按钮打开一个小窗口,即actions窗口,用于访问选中控件的属性和方法。visualstudio中的许多控件都有这个特性。tabcontrol的actions窗口可以方便地在设计期间添加和删除tabpages。添加了需要的tabpages后,就可以给页面添加控件;点击tabcontrol控件的属性,选择tabpages属性右边的按钮,弹出tabpage集合编辑器,将tabpage1的name设置为tabpagelayer,text设置为图层,将tabpage2的name设置为tabpageproperty,text设置为属性。,程序修改步骤,选择工具箱中的“菜单和工具栏|menustrip”,将其拖入窗体。选择工具箱中的“arcgiswindowsforms”节,将“toolbarcontrol”控件拖入窗体,其dock属性设置为top。选择工具箱中的“菜单和工具栏|statusstrip”,将其拖入窗体。选择工具箱中的“容器|splitcontainer”容器拖入窗体,并将其dock属性设置为fill。,将tabcontrol控件拖入panel1,将alignment属性设置为bottom,dock属性设置为fill。点击tabpages属性右边的按钮,弹出tabpage集合编辑器,将tabpage1的name设置为tabpagelayer,text设置为图层,将tabpage2的name设置为tabpageproperty,text设置为属性。如下所示。,选择“图层”选项卡,拖入toccontrol控件,设置dock属性为fill。选择“属性”选项卡,拖入datagridview控件,设置dock属性为fill。拖入tabcontrol控件到panel2,设置dock属性为fill。并上述类似的方法,将两个选项卡的name和text分别设置为:(tabpagemap、地图),(tabpagelayout,制版)。选择“地图”选项卡,拖入mapcontrol控件,设置dock属性为fill。选择“制版”选项卡,拖入pagelayoutcontrol控件,设置dock属性为fill。其他设置同前。按f5编译运行。,3.2mapcontrol控件,mapcontrol控件与mxd文件loadmxfile方法openfiledialog1.title=打开arcmap文档;openfiledialog1.filter=arcmap文件(*.mxd)|*.mxd;dialogresultpdialogresult=openfiledialog1.showdialog();if(pdialogresult!=dialogresult.ok)return;stringppath=openfiledialog1.filename;if(axmapcontrol1.checkmxfile(ppath)axmapcontrol1.loadmxfile(ppath);/axmapcontrol1.loadmxfile(ppath,0,missing);elsemessagebox.show(filepathe+“不是有效的地图文档“)/说明:首先使用对话框控件找到要打开的mxd文档filepathe,然后利用mapcontrol控件提供的方法checkmxfile()检查filepath是否为合法的mxd文档,如果合法则调用mapcontrol提供的方法loadmxfile()打开该mxd文档,否则,显示打不开文档的有关信息。imapdocument接口定义的属性与方法;imapdocumentpmapdoc=newmapdocumentclass();pmapdoc.open(ppath,);axmapcontrol1.loadmxfile(pmapdoc.documentfilename);,mapcontrol对应arcmap中的数据视图(dataview),它封装了map对象(coclass),并提供了额外的属性、方法、事件用于:管理控件的外观、显示属性和地图属性;添加并管理控件中的数据层;装载map文档(mxd)到控件中;动态添加和显示几何对象等;map组件类主要接口imap:imappmap=axmapcontrol1.map;,mapcontrol实现的主要接口有:imapcontroldefaultimapcontrol2,imapcontrol3,mapcontrol4和事件接口imapcontrolevents2imapcontroldefault接口是地图控件缺省接口,该接口代表了mapcontrol控件最新版本的接口。由于mapcontrol是一个自动化控件,当它被放到一个容器-如窗体上后,它会自动产生一个被称为axmapcontrol1的对象,这个对象可以直接使用缺省接口定义的属性和方法。当需要使用这个接口时,可使用下面的代码:imapcontroldefaultpmapcontrol;pmapcontrol=axmapcontrol1.objectasimapcontroldefault;,imapcontrolevents2是一个事件接口,它定义了mapcontrol能够处理的全部事件。onafterscreendraw:firesafterthemapcontainedbythemapcontrolhasfinisheddrawing.绘屏结束后触发的事件;onbeforescreendraw:firesbeforethemapcontainedbythemapcontrolstartstodraw.执行屏幕绘制前触发的事件;ondoubleclick:fireswhentheuserpressesandreleasesthemousebuttontwiceinquicksuccession.onextentupdated:firesaftertheextent(visiblebounds)ofthemapcontrolischanged.onfullextentupdated:firesafterthefullextent(bounds)ofthemapcontrolhaschanged.onkeydown:firesafterakeyispressedonthekeyboard.onkeyup:firesafterapressedkeyisreleased.onmapreplaced:firesafterthemapcontainedbythemapcontrolhasbeenreplaced.当mapcontrol中导入地图文档时,触发该事件;onafterdraw:firesafterthemapdrawsaspecifiedviewphase.,onmousedown:fireswhentheuserpressesanymousebuttonwhileoverthemapcontrol.onmousemove:fireswhentheusermovesthemouseoverthemapcontrol.onmouseup:fireswhentheuserreleasesamousebuttonwhileoverthemapcontrol.onoledrop:fireswhenanoledropactionoccursonthemapcontrol.当一个对象在mapcontrol拖动过程中触发的事件onselectionchanged:fireswhenthecurrentselectionchanges.onviewrefreshed:fireswhentheviewisrefreshedbeforedrawingoccurs地图控件事件,用户输入键盘和鼠标时每个arcgis控件都会触发相应的事件,当然有一些事情是只有进行到相应控件操作的时候来有效,当然大部分都在控件范围内触发相应的事件,比如:当mapcontrol中导入地图文档时,这个onmapreplaced事件将会触发相应的事件;,3.3加载图层,3.2.1shapefile文件介绍3.2.2利用程序添加shape文件3.2.3利用程序添加其他文件,检查mxd文件存在不存在:checkmxfile;导入mxd文件:loadmxfile;读mxd文件:readmxmaps;文档名称:documentfilename,map接口包含了地图数据,一个map象包含了图层,图层中包含了要素和地图数据,,经常使用的地图/gis的操作地图控件(mapcontrol)都提供了帮助和便利的使用方法,比如下面的方法:addlayerfromfile:导入图层文件并且加入到地图控件中的图层进行关联并且会自动指定一个索引(index)用来你取出图层及图层在地图控件中的位置,当然你加入的时候也可以指定,不然就自动放在最顶部,那么这时index为0,当每增加一层,前面增加的图层的index会自动增加+1,这样我们就很容易取到我们所要的图层。addshapefile:增加一个shape文件数据到地图控件中,这个如果放置跟前面addlayerfromfile方法类似,所以这里不再讲解。addlayer:这是一种最便捷的方法增加图层,利用imap:addlayer,它将增加一个图层并可以给出index来进行增加,这也是我们经常使用的一种方法。deletelayer:这是imap:deletelayer删除图层的方法,当删除图层后会自动重新计算地图控件的范围(extent),使用者不用管理它。movelayerto:移动图层到新的位置,当图层之间有相互叠加的情况时,那么谁在上面、下面都可以使用这种方法来进行移动。layer:我们最经常使用的是imap:layer,主要是通过map的图层来得到图层或进行图层的相关操作。map:这是地图接口(mapcoclass)包含在地图控件中。,mapcontrol控件是ae显示地理数据的基本控件,加载esri格式的数据源:shapefile,coverage,geodatabase,cad,影像数据img,tif,geotiff等。arcgis具有表达要素、栅格等空间信息的高级地理数据模型,arcgis支持基于文件和dbms(数据库管理系统)的两种数据模型。基于文件的数据模型包括coverage、shape文件、grids、影像、不规则三角网(tin)等gis数据集。,3.2.1shapefile文件介绍,shape文件数据模型特点:基于其非拓扑性,可以使文件迅速显示出来。简单要素类型:点、线、面分别存储。一个shape文件中只能存储一种类型的要素。,shape文件的构成,一个shape文件至少包括一个主文件、一个索引文件及一个dbase数据表文件shape文件示例:.shp主文件mainfile:counties.shp贮存地理要素的几何数据.shx索引文件indexfile:counties.shx,贮存图形要素索引信息,用于查询.dbfdbase数据表文件:counties.dbf,贮存要素属性信息的dbase文件.prj投影参数文件:counties.prj,.shp文件,用于存储地理要素的图形数据,.shape数据模型,实现了地理空间数据的存储,.dbf文件,用于存储地理要素的属性数据,地图上的每个要素在数据表中对应一行记录。通过关键字段(一个唯一的记录编号)实现图形数据记录与属性数据记录间一对一的关系。dbase文件中的属性记录必须与主文件中图形数据记录的顺序相同。,每一个图层中包含了相同类型的地理要素,对应一个shape文件,每个要素对应shape数据文件中的一行记录。,3.2.2利用程序添加shape文件,我们在3.1部分没有写代码的情况下,生成了一个地图浏览小程序,下面使用代码的方式添加数据。添加菜单控件menustrip添加引用所用主要类及接口介绍对话框介绍加载数据总结,加载shapefile的中方法地图控件mapcontrol.addlayer(文件名(含文件目录);地图控件mapcontrol.addshapefile(文件目录,文件名(不含文件目录)。打开shapefile的addlayer方法需要建工作区和找数据集等步骤,比较复杂;简单的是addshapefile方法;地图控件mapcontrol.addlayerfromfile(lyr文件名);,添加菜单控件(设置属性与方法),在vs2008的工具箱中,双击menustrip控件,添加菜单控件;在菜单上输入“添加shp”作为菜单的标题(.text=“添加shp”),输入“menuaddshp”作为菜单的名称(.name=“menuaddshp”);选中“添加shp”菜单,在属性框中点击事件按钮,在事件列表中双击click事件,(添加事件的方法:在事件列表中双击需要添加的事件按钮)自动生成的事件处理方法如下图所示,我们将在方法内输入处理代码。,添加引用(addarcgisreference),首先在工程-“引用”(程序集(assembly):使用.net开发arcgisengine程序使用的组件被称为程序集,ae中一般是dll文件,一个程序集包括一个或多个命名空间。添加引用意在告诉编译器,我的这个程序中使用了那些外部的库,他们都在哪里;如添加esri.arcgis.controls程序集(放大controlsmapzoomintoolclass、缩小、打开文件、保存文件等arcmap中常用用的命令都在controls库);然后在全局定义前使用using命令引用,using命令意在告诉编译器,我这个程序里使用了某个命名空间,不用再写他的全名了,让编译器帮你去找。引用命名空间主要是为了减少冗余代码,比如我们要使用controlsmapzoomintoolclass,如果在工程前添加了usingesri.arcgis.controls,我们就可以直接用“controlsmapzoomintoolclass“这个简称来调用他,否则用全称。在form1.cs源代码文件中,在源代码的最顶部,输入如下代码,导入命名空间usingsystem.io;usingesri.arcgis.datasourcesfile;usingesri.arcgis.geodatabase;usingesri.arcgis.carto;,右键“添加引用”来添加不成功的话,就右键“addarcgisreference”来添加。,所用主要类及接口介绍,addlayer方法举例,菜单的click事件处理方法中添加如下代码:privatevoidmenuaddshp_click(objectsender,eventargse)1.shapefileworkspacefactory组件对象类创建了一个shapefile工作空间厂对象。iworkspacefactorypworkspacefactory=newshapefileworkspacefactory();2.iworkspace.openfromfile方法返回一个对工作空间的引用。pworkspace=pworkspacefactory.openfromfile(c:programfilesarcgisdeveloperkitsamplesnetdataworld,0);3.workspace对象包含一个ifeatureworkspace接口。该接口有一个返回featureclass的openfeatureclass方法。ifeatureworkspacepfeatureworkspace=pworkspaceasifeatureworkspace;ifeatureclasspfc=pfeatureworkspace.openfeatureclass(world30.shp);或者:ifeatureclasspclass=pworkspace.openfeatureclass(“word30.shp”);4.为了添加数据到地图中,创建一个featurelayer并将featureclass与之连接。ifeaturelayerplayer=newfeaturelayer;player.featureclass=pclass;5.设置name属性在map内容表中显示图层名。由于接口的继承性,可以直接通过ifeaturelayer接口访问name属性。player.name=pclass.aliasname6.mapcontrol的addlayer方法添加featurelayer对象到map中。pmap.addlayer(player);7.新添加的图层显示在屏幕上。注意使用partialrefresh方法代替refresh方法;这样确保所有图层的最优显示。axmapcontrol1.activeview.refresh();,本示例添加shapefile文件到地图控件的思路:创建类工厂;使用类工厂打开工作空间,如featureworkspace。打开要素类。创建要素图层。关联图层和要素类。添加到地图控件中。要点利用iworkspacefacktory接口、ifeatureworkspace接口和ifeaturelayer接口实现连接shape文件;通过featurelayer类实现ifeaturelayer接口对象;设置ifeaturelayer.featureclass属性和name属性;使用imap.addlayer方法将新层添加到当前地图。本例可以作简单地改动来支持不同的数据源。,该程序涉及的主要类及接口介绍workspacefactoryworkspaceiworkspace接口ifeatureworkspace接口要素图层featurelayerfeatureclass对象,workspacefactory,workspace(工作空间)是一个普通类(class),用户不能直接新建它。为了获得一个工作空间,需要使用workspacefactory(工作空间工厂)对象来创建一个workspace。workspacefactory是geodatabase的入口。它是一个抽象类,派生了很多的子类,例如imsworkspacefactory,accessworkspacefactory,shapefileworkspacefactory等,如图所示,不同类型的文件需要不同的工作空间工厂对象来打开一个工作空间。iworkspacefctory接口定义了所有工作空间对象的一般属性和方法,用户可以通过它管理不同类型的工作空间,所有的工作空间对象都可以通过这个接口产生。iworkspacefactory:openfromfile方法打开一个已经存在的工作空间,打开一个文件类型数据。,workspace,工作空间(workspace)对象代表了一个地理数据库,shapefile文件的文件夹或coverage工作空间。在逻辑上是一个包含空间数据集和非空间数据集的数据容器,从geodatabase的对象模型图中可以看到,这些数据包括要素类、栅格数据集、表等对象。workspace对象也提供了用于创建新数据集和操作已经存在的数据集的方法。workspace类型举例:基于文件类型的shapefiles和arclnfo的工作空间为featureworkspace;rasterworkspace(gridsandlmages)tinworkspace(tins)。workspace对象拥有众多的接口,管理着庞大的属性和方法集。workspace对象主要的一些接口:ifeatureworkspace接口用于访问和管理地理数据库中的要素的重要成分数据集,如表table、对象类objectclass、要素类(featureclass)、要素数据集(featuredataset)和关系类(relationshipclass)等。该接口是workspace创建和打开对象、对象类的主接口。,workspace,接口中所有的以open开头的方法都需要传入一个要素集的名宇,如opentable,opendataset或者是openfeatureclass方法。ifeatureworkspace:openfeatureclass方法可以用于打开一个已经存在的要素类,无论这个要素类是在工作空间中还是在一个要素数据集中。ifeatureworkspace:opentable方法可以用于打开一个已经存在的表或者一对象类,这是因为对象类本身也是一个表,它也实现了itable接口。,要素图层featurelayer,要素数据是gis中最常使用的数据类型之一,已可以用于表示离散矢量对象的信息,而承载要素数据的要素图层(featurelayer)是研究重点。要素图层的几个重要接口定义的方法和属性(ifeaturelayer:featureclass,ifeaturelayer:name)。ifeaturelayer接口用于管理要素图层的数据源,即要素类(featureclass)。新建一个要素图层对象必须引入geodatabase库(usingesri.arcgis.geodatabase),然后代码:ifeaturelayerpfeatlyr;pfeatlyr=newfeaturelayerciass();ifeaturelayer:featureclass属性返回要素图层使用的要素类,featureclass对象,featureclass(要素类)是一个空间实体,是可以存储空间数据的对象类,它是objectclass的(spatialentity)的集合,这些空间实体就是要素,它被用于模拟离散的,具有空间属性的对象。在一个要素类中的所有的要素都使用同样的字段结构,要素类与表、对象类的最大的区别在于它拥有一个几何字段,即shape字段,用于存储要素的几何信息,这使得用户可以在地图上看到一个要素的形状和位置。.ifeatureclass接口程序员操作要素类时使用的主要接口,接口定义用于操作要素类的属性和方法。,上例中只能把arcgis文件夹中的usstates.shp文件添加到地图控件中。为了让用户添加任意shp文件,需要添加一个的openfiledialog控件到窗体。click事件处理方法中修改相应代码:把上面的代码pworkspacefactory.openfromfile(c:arcgis,0);ifeatureworkspacepfeatureworkspace=pworkspaceasifeatureworkspace;ifeatureclasspfc=pfeatureworkspace.openfeatureclass(“usstates.shp”);替换为如下的代码,其他不变openfiledialog1.filter=shapefile文件(*.shp)|*.shp;openfiledialog1.initialdirectory=c:arcgis;openfiledialog1.multiselect=false;dialogresultpdialogresult=openfiledialog1.showdialog();if(pdialogresult!=dialogresult.ok)return;stringppath=openfiledialog1.filename;/获得文件的路径stringpfolder=path.getdirectoryname(ppath);/得到文件所在的文件夹位置stringpfilename=path.getfilename(ppath);/得到文件名iworkspacepworkspace=pworkspacefactory.openfromfile(pfolder,0);,对话框简介,windows主要有3种对话框:模态对话框、非模态对话框和通用对话框。模态对话框:指当这个对话框弹出的时候,鼠标不能够单击这个对话框以外的区域。这种对话框通常不会总是出现在屏幕上,往往是在用户进行了某些操作以后才出现的。非模态对话框:通常用于显示用户需要经常访问的控件和数据,并且在使用这个对话框的过程中需要访问其他窗口的情况,比如很多应用程序例如:word和记事本的查找对话框就是非模态对话框。,micorosoftoffice“选项”对话框替换对话框(非模态对话框)(非模态对话框),通用对话框不同的windows应用软件常常使用功能相同的对话框,比如“打开”、“保存”、“打印”等对话框,这类对话框称为通用对话框。c#中如何使用这些通用对话框?使用通用对话框的两种方法:在设计窗体时,从工具箱向窗体上拖放一个通用对话框控件,在程序中使用到这个对话框时设置它的属性,并调用它的showdialog()方法。在运行的时刻创建通用对话框对象、设置它的属性、调用它的showdialog方法。这种方法创建的通用对话框对象是临时的,生命期通常很短,比较节约资源。打开文件对话框,对话框方式:模态对话框和通用对话框用showdialog()方法显示;非模态对话框使用show()方法显示。对话框关闭方式:当用户单击模式对话框中的“确定”或“取消”按钮时,对话框将关闭,这时候必须向显示这个对话框的代码返回结果,反映对话框关闭的方式。c#类型的windows程序可以使用两种方法设置对话框的关闭方式:在设计对话框窗体中设置按钮的dialogresult属性;在按钮的单击事件方法中设置窗体的dialogresult属性;“确定”按钮的dialogresult属性设置成ok(opendialog1.dialogresult=dialogresult.ok);“取消”按钮的设置成cancel(ok(opendialog1.dialogresult=dialogresult.cancel)。,打开文件对话框:所对应的类是openfiledialog。openfiledialog类和savefiledialog类都继承自抽象类filedialog,它们有一些共同的属性和方法。filename:string类型,返回用户选择的文件名称,包括文件的路径和文件名。这个属性只能返回一个文件的名称。stringppath=openfiledialog1.filename;filenames:string数组,返回用户选择的多个文件的名称,包括文件的路径和文件名。fileter:string类型,用来指定“文件类型”下拉列表框中的文件过滤选项,每个文件的过滤选项包括描述和过滤器两部分,它们之间用“|”隔开。当有多个文件过滤选项时,它们之间也使用“|”分隔开,openfiledialog1.filter=“shapefile文件(*.shp)|*.shp”;字符串“textfiles(*.txt)|*.txt|allfiles(*.*)|”指定了两个文件的过滤选项。title:string类型,指示对话框的标题,如果没有指定,openfiledialog使用“打开”,savefiledialog使用“另存为”。initialdirectory:string类型,对话框显示时打开的文件夹的名称。openfiledialog1.initialdirectory=d:gis-data;/符号作用使转意字符“”作为一般字符对待;,checkfileexists:bool类型,用来指示当用户输入不存在的文件名称时是否显示警告信息。true为显示,false为不显示。checkpathexists:bool类型,用来指示当用户输入不存在的路径名称时是否显示警告信息。true为显示,false为不显示。filterindex:int类型,“文件类型”下拉列表框中当前选中的文件过滤项的索引,第一个文件过滤项的索引值为1。defaultext:string类型,指定默认文件后缀名称。当用户在“文件名称”文本框中输入不带后缀的文件名时,对话框将在文件名后面添加这个属性指定的后缀名。addextendsion:bool类型,用来指定当用户没有输入后缀名时是否自动在文件名后添加后缀。restoredirectory:bool类型,指示在对话框关闭之前是否恢复当前文件夹。用户在使用对话框的过程中可能会浏览其他文件夹,这就改变了应用程序的当前文件夹,如果把这个属性指定为true,则对话框会在关闭之前把当前文件夹恢复为原来的值。,此外,openfiledialog具有以下特有的属性:mutiselect:bool类型,用来指示是否允许用户同时选择多个文件,true为允许,false为不允许。showreadonly:bool类型,用来指定是否在对话框上显示“只读”复选框,true为显示,false为不显示。readonlychecked:bool类型,指示对话框上的“只读”复选框是否被选中,true为选中,false为没有选中。,iworkspacefactorypworkspacefactory=newshapefileworkspacefactoryclass();/打开shapefile工作空间openfiledialog1.filter=(“shapefile文件(*.shp)|*.shp”);/文件过滤openfiledialog1.initialdirectory=“c:programfilesarcgisgis-dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版让与担保制度风险管理体系合同
- 2025版环保设备监造与节能改造合同
- 2025版特色小镇商铺委托出租运营合作协议
- 2025年度综合性商场展览场地租赁及广告投放合同
- 2025年度学校桶装水项目合作协议范本
- 2025年度房屋买卖分期付款及违约责任协议
- 2025年智能穿戴设备研发与市场推广合作协议
- 2025年度石油产品运输及保险服务合同
- 2025版专业摄像头研发与生产采购合同范本
- 2025版三方公司租赁设备借款合同
- 《语文八下第三单元复习课》课件
- 2025年山西省公务员考试行测试卷历年真题及答案详解(名校卷)
- 2025年消除艾滋病、梅毒、乙肝母婴传播培训考试试题(含答案)
- 2025年部编版语文四年级上册全册单元、期中、期末测试题及答案(共10套)
- 患者期望与实际效果-洞察及研究
- 风力发电税务培训课件
- 2025年长沙市中考物理试卷真题(含答案)
- 检验科生化培训课件
- 数控安全培训课件
- 配电类“两种人”题库(2025年3月修编)改
- 假期返校安全教育
评论
0/150
提交评论