About the Editing using a custom form Sample
[C#]
MainForm.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.ADF;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Display;
namespace EditingUsingCustomForm
{
public sealed partial class MainForm : Form
{
#region private members
private IMapControl3 m_mapControl = null;
#endregion
#region class constructor
public MainForm()
{
InitializeComponent();
}
#endregion
private void MainForm_Load(object sender, EventArgs e)
{
m_mapControl = (IMapControl3) axMapControl1.Object;
//relative file path to the sample data from EXE location
string filePath = @"..\..\..\data\USAMajorHighways";
//Add Lakes layer
IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace workspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(filePath, axMapControl1.hWnd);
IFeatureLayer featureLayer = new FeatureLayerClass();
featureLayer.Name = "Lakes";
featureLayer.Visible = true;
featureLayer.FeatureClass = workspace.OpenFeatureClass("us_lakes");
#region create a SimplerRenderer
IRgbColor color = new RgbColorClass();
color.Red = 190;
color.Green = 232;
color.Blue = 255;
ISimpleFillSymbol sym = new SimpleFillSymbolClass();
sym.Color = color;
ISimpleRenderer renderer = new SimpleRendererClass();
renderer.Symbol = sym as ISymbol;
#endregion
((IGeoFeatureLayer)featureLayer).Renderer = renderer as IFeatureRenderer;
axMapControl1.Map.AddLayer((ILayer)featureLayer);
//Add Highways layer
featureLayer = new FeatureLayerClass();
featureLayer.Name = "Highways";
featureLayer.Visible = true;
featureLayer.FeatureClass = workspace.OpenFeatureClass("usa_major_highways");
axMapControl1.Map.AddLayer((ILayer)featureLayer);
//******** Important *************
//store a reference to this form (Mainform) using the EditHelper class
EditHelper.TheMainForm = this;
EditHelper.IsEditorFormOpen = false;
//add the EditCmd command to the toolbar
axEditorToolbar.AddItem("esriControls.ControlsOpenDocCommand", 0, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);
axEditorToolbar.AddItem("esriControls.ControlsSaveAsDocCommand", 0, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);
axEditorToolbar.AddItem("esriControls.ControlsAddDataCommand", 0, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);
axEditorToolbar.AddItem(new EditCmd(), 0, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);
}
private void MainForm_Shown(object sender, EventArgs e)
{
//Warn users if the ArcGIS Engine samples used by this application have not been compiled
ArrayList checkList = new ArrayList();
checkList.Add("ReshapePolylineEditTask_CS.ReshapePolylineEditTask");
checkList.Add("VertexCommands_CS.UsingOutOfBoxVertexCommands");
Type t = null;
bool success = true;
foreach (string item in checkList)
{
t = Type.GetTypeFromProgID(item);
if (t == null)
{
success = false;
break;
}
}
if (!success)
MessageBox.Show("Editing will not function correctly until the C# ReshapePolylineEditTask and VertexCommands samples have been compiled. More information can be found in the 'How to use' section for this sample.",
"Warning",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
#region public properties
// Returns the MapControl
public IMapControl3 MapControl
{
get { return m_mapControl; }
}
#endregion
}
}
[Visual Basic .NET]
MainForm.vb
Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.IO
Imports System.Runtime.InteropServices
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Controls
Imports ESRI.ArcGIS.ADF
Imports ESRI.ArcGIS.SystemUI
Imports ESRI.ArcGIS.DataSourcesFile
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Display
Public Class MainForm
<STAThread()> _
Shared Sub Main()
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine)
Application.Run(New MainForm())
End Sub
#Region "private members"
Private m_mapControl As IMapControl3 = Nothing
#End Region
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m_mapControl = CType(AxMapControl1.Object, IMapControl3)
'relative file path to the sample data from EXE location
Dim filePath As String = "..\..\..\data\USAMajorHighways"
'Add Lakes layer
Dim workspaceFactory As IWorkspaceFactory = New ShapefileWorkspaceFactoryClass()
Dim workspace As IFeatureWorkspace = CType(workspaceFactory.OpenFromFile(filePath, AxMapControl1.hWnd), IFeatureWorkspace)
Dim featureLayer As IFeatureLayer = New FeatureLayerClass()
featureLayer.Name = "Lakes"
featureLayer.Visible = True
featureLayer.FeatureClass = workspace.OpenFeatureClass("us_lakes")
'create a SimplerRenderer
Dim color As IRgbColor = New RgbColorClass()
color.Red = 190
color.Green = 232
color.Blue = 255
Dim sym As ISimpleFillSymbol = New SimpleFillSymbolClass()
sym.Color = color
Dim renderer As ISimpleRenderer = New SimpleRendererClass()
renderer.Symbol = sym
CType(featureLayer, IGeoFeatureLayer).Renderer = renderer
AxMapControl1.Map.AddLayer(CType(featureLayer, ILayer))
'Add Highways layer
featureLayer = New FeatureLayerClass()
featureLayer.Name = "Highways"
featureLayer.Visible = True
featureLayer.FeatureClass = workspace.OpenFeatureClass("usa_major_highways")
AxMapControl1.Map.AddLayer(CType(featureLayer, ILayer))
'******** Important *************
'store a reference to this form (Mainform) using the EditHelper class
EditHelper.TheMainForm = Me
EditHelper.IsEditorFormOpen = False
'add the EditCmd command to the toolbar
axEditorToolbar.AddItem("esriControls.ControlsOpenDocCommand", 0, -1, False, 0, esriCommandStyles.esriCommandStyleIconOnly)
axEditorToolbar.AddItem("esriControls.ControlsSaveAsDocCommand", 0, -1, False, 0, esriCommandStyles.esriCommandStyleIconOnly)
axEditorToolbar.AddItem("esriControls.ControlsAddDataCommand", 0, -1, False, 0, esriCommandStyles.esriCommandStyleIconOnly)
axEditorToolbar.AddItem(New EditCmd(), 0, -1, False, 0, esriCommandStyles.esriCommandStyleIconOnly)
End Sub
Private Sub MainForm_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
'Warn users if the ArcGIS Engine samples used by this application have not been compiled
Dim checkList As ArrayList = New ArrayList()
checkList.Add("ReshapePolylineEditTask_CS.ReshapePolylineEditTask")
checkList.Add("VertexCommands_CS.CustomVertexCommands")
Dim t As Type = Nothing
Dim success As Boolean = True
Dim item As String
For Each item In checkList
t = Type.GetTypeFromProgID(item)
If t Is Nothing Then
success = False
Exit For
End If
Next
If Not success Then
MessageBox.Show("Editing will not function correctly until the C# ReshapePolylineEditTask and VertexCommands samples have been compiled. More information can be found in the 'How to use' section for this sample.", _
"Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
#Region "public properties"
Public ReadOnly Property MapControl() As IMapControl3
Get
Return m_mapControl
End Get
End Property
#End Region
End Class