![]() |
This document is archived and information here might be outdated. Recommended version. |
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