This document is archived and information here might be outdated. Recommended version. |
ArcObjects Help for .NET developers > ESRI.ArcGIS.Snippets > Snippets > Add Shapefile Using OpenFileDialog Snippet (ArcObjects .NET 10.4 SDK) |
Add a shapefile to the ActiveView using the Windows.Forms.OpenFileDialog control.
///<summary>Add a shapefile to the ActiveView using the Windows.Forms.OpenFileDialog control.</summary> /// ///<param name="activeView">An IActiveView interface</param> /// ///<remarks></remarks> public void AddShapefileUsingOpenFileDialog(ESRI.ArcGIS.Carto.IActiveView activeView) { //parameter check if (activeView == null) { return; } // Use the OpenFileDialog Class to choose which shapefile to load. System.Windows.Forms.OpenFileDialog openFileDialog=new System.Windows.Forms.OpenFileDialog(); openFileDialog.InitialDirectory="c:\\"; openFileDialog.Filter="Shapefiles (*.shp)|*.shp"; openFileDialog.FilterIndex=2; openFileDialog.RestoreDirectory=true; openFileDialog.Multiselect=false; if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // The user chose a particular shapefile. // The returned string will be the full path, filename and file-extension for the chosen shapefile. Example: "C:\test\cities.shp" string shapefileLocation=openFileDialog.FileName; if (shapefileLocation != "") { // Ensure the user chooses a shapefile // Create a new ShapefileWorkspaceFactory CoClass to create a new workspace ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory=new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); // System.IO.Path.GetDirectoryName(shapefileLocation) returns the directory part of the string. Example: "C:\test\" ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace=(ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0); // Explicit Cast // System.IO.Path.GetFileNameWithoutExtension(shapefileLocation) returns the base filename (without extension). Example: "cities" ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass=featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation)); ESRI.ArcGIS.Carto.IFeatureLayer featureLayer=new ESRI.ArcGIS.Carto.FeatureLayerClass(); featureLayer.FeatureClass=featureClass; featureLayer.Name=featureClass.AliasName; featureLayer.Visible=true; activeView.FocusMap.AddLayer(featureLayer); // Zoom the display to the full extent of all layers in the map activeView.Extent=activeView.FullExtent; activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, null, null); } else { // The user did not choose a shapefile. // Do whatever remedial actions as necessary // System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #1", // System.Windows.Forms.MessageBoxButtons.OK, // System.Windows.Forms.MessageBoxIcon.Exclamation); } } else { // The user did not choose a shapefile. They clicked Cancel or closed the dialog by the "X" button. // Do whatever remedial actions as necessary. // System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #2", // System.Windows.Forms.MessageBoxButtons.OK, // System.Windows.Forms.MessageBoxIcon.Exclamation); } }
'''<summary>Add a shapefile to the ActiveView using the Windows.Forms.OpenFileDialog control.</summary> ''' '''<param name="activeView">An IActiveView interface</param> ''' '''<remarks></remarks> Public Sub AddShapefileUsingOpenFileDialog(ByVal activeView As ESRI.ArcGIS.Carto.IActiveView) 'parameter check If activeView Is Nothing Then Return End If ' Use the OpenFileDialog Class to choose which shapefile to load. Dim openFileDialog As System.Windows.Forms.OpenFileDialog=New System.Windows.Forms.OpenFileDialog openFileDialog.InitialDirectory="c:\" openFileDialog.Filter="Shapefiles (*.shp)|*.shp" openFileDialog.FilterIndex=2 openFileDialog.RestoreDirectory=True openFileDialog.Multiselect=False If openFileDialog.ShowDialog=System.Windows.Forms.DialogResult.OK Then ' The user chose a particular shapefile. ' The returned string will be the full path, filename and file-extension for the chosen shapefile. Example: "C:\test\cities.shp" Dim shapefileLocation As String=openFileDialog.FileName If shapefileLocation <> "" Then ' Ensure the user chooses a shapefile ' Create a new ShapefileWorkspaceFactory CoClass to create a new workspace Dim workspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory=New ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass ' System.IO.Path.GetDirectoryName(shapefileLocation) returns the directory part of the string. Example: "C:\test\" Dim featureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace=CType(workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0), ESRI.ArcGIS.Geodatabase.IFeatureWorkspace) ' Explicit Cast ' System.IO.Path.GetFileNameWithoutExtension(shapefileLocation) returns the base filename (without extension). Example: "cities" Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass=featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation)) Dim featureLayer As ESRI.ArcGIS.Carto.IFeatureLayer=New ESRI.ArcGIS.Carto.FeatureLayerClass featureLayer.FeatureClass=featureClass featureLayer.Name=featureClass.AliasName featureLayer.Visible=True activeView.FocusMap.AddLayer(featureLayer) ' Zoom the display to the full extent of all layers in the map activeView.Extent=activeView.FullExtent activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, Nothing, Nothing) Else ' The user did not choose a shapefile. ' Do whatever remedial actions as necessary ' System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #1", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation) End If Else ' The user did not choose a shapefile. They clicked Cancel or closed the dialog by the "X" button. ' Do whatever remedial actions as necessary. ' System.Windows.Forms.MessageBox.Show("No shapefile chosen", "No Choice #2", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation) End If End Sub