About the Simple dynamic display application 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; namespace MyDynamicDisplayApp { public sealed partial class MainForm : Form { #region class private members private IMapControl3 m_mapControl = null; private string m_mapDocumentName = string.Empty; #endregion #region class constructor public MainForm() { InitializeComponent(); } #endregion private void MainForm_Load(object sender, EventArgs e) { //get the MapControl m_mapControl = (IMapControl3)axMapControl1.Object; //disable the Save menu (since there is no document yet) menuSaveDoc.Enabled = false; axToolbarControl1.AddItem(new ToggleDynamicDisplayCmd()); axToolbarControl1.AddItem(new LoadDynamicLayerCmd()); } #region Main Menu event handlers private void menuNewDoc_Click(object sender, EventArgs e) { //execute New Document command ICommand command = new CreateNewDocument(); command.OnCreate(m_mapControl.Object); command.OnClick(); } private void menuOpenDoc_Click(object sender, EventArgs e) { //execute Open Document command ICommand command = new ControlsOpenDocCommandClass(); command.OnCreate(m_mapControl.Object); command.OnClick(); } private void menuSaveDoc_Click(object sender, EventArgs e) { //execute Save Document command if (m_mapControl.CheckMxFile(m_mapDocumentName)) { //create a new instance of a MapDocument IMapDocument mapDoc = new MapDocumentClass(); mapDoc.Open(m_mapDocumentName, string.Empty); //Make sure that the MapDocument is not readonly if (mapDoc.get_IsReadOnly(m_mapDocumentName)) { MessageBox.Show("Map document is read only!"); mapDoc.Close(); return; } //Replace its contents with the current map mapDoc.ReplaceContents((IMxdContents)m_mapControl.Map); //save the MapDocument in order to persist it mapDoc.Save(mapDoc.UsesRelativePaths, false); //close the MapDocument mapDoc.Close(); } } private void menuSaveAs_Click(object sender, EventArgs e) { //execute SaveAs Document command ICommand command = new ControlsSaveAsDocCommandClass(); command.OnCreate(m_mapControl.Object); command.OnClick(); } private void menuExitApp_Click(object sender, EventArgs e) { //exit the application Application.Exit(); } #endregion //listen to MapReplaced event in order to update the status bar and the Save menu private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e) { //get the current document name from the MapControl m_mapDocumentName = m_mapControl.DocumentFilename; //if there is no MapDocument, disable the Save menu and clear the status bar if (m_mapDocumentName == string.Empty) { menuSaveDoc.Enabled = false; statusBarXY.Text = string.Empty; } else { //enable the Save menu and write the doc name to the status bar menuSaveDoc.Enabled = true; statusBarXY.Text = Path.GetFileName(m_mapDocumentName); } } private void axMapControl1_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e) { statusBarXY.Text = string.Format("{0}, {1} {2}", e.mapX.ToString("#######.##"), e.mapY.ToString("#######.##"), axMapControl1.MapUnits.ToString().Substring(4)); } } }
[Visual Basic .NET]
MainForm.vb
Imports Microsoft.VisualBasic 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 Public NotInheritable Partial Class MainForm : Inherits Form #Region "class private members" Private m_mapControl As IMapControl3 = Nothing Private m_mapDocumentName As String = String.Empty #End Region #Region "class constructor" Public Sub New() InitializeComponent() End Sub #End Region Private Sub MainForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load 'get the MapControl m_mapControl = CType(axMapControl1.Object, IMapControl3) 'disable the Save menu (since there is no document yet) menuSaveDoc.Enabled = False axToolbarControl1.AddItem(New ToggleDynamicDisplayCmd()) axToolbarControl1.AddItem(New LoadDynamicLayerCmd()) End Sub #Region "Main Menu event handlers" Private Sub menuNewDoc_Click(ByVal sender As Object, ByVal e As EventArgs) Handles menuNewDoc.Click 'execute New Document command Dim command As ICommand = New CreateNewDocument() command.OnCreate(m_mapControl.Object) command.OnClick() End Sub Private Sub menuOpenDoc_Click(ByVal sender As Object, ByVal e As EventArgs) Handles menuOpenDoc.Click 'execute Open Document command Dim command As ICommand = New ControlsOpenDocCommandClass() command.OnCreate(m_mapControl.Object) command.OnClick() End Sub Private Sub menuSaveDoc_Click(ByVal sender As Object, ByVal e As EventArgs) Handles menuSaveDoc.Click 'execute Save Document command If m_mapControl.CheckMxFile(m_mapDocumentName) Then 'create a new instance of a MapDocument Dim mapDoc As IMapDocument = New MapDocumentClass() mapDoc.Open(m_mapDocumentName, String.Empty) 'Make sure that the MapDocument is not readonly If mapDoc.IsReadOnly(m_mapDocumentName) Then MessageBox.Show("Map document is read only!") mapDoc.Close() Return End If 'Replace its contents with the current map mapDoc.ReplaceContents(CType(m_mapControl.Map, IMxdContents)) 'save the MapDocument in order to persist it mapDoc.Save(mapDoc.UsesRelativePaths, False) 'close the MapDocument mapDoc.Close() End If End Sub Private Sub menuSaveAs_Click(ByVal sender As Object, ByVal e As EventArgs) Handles menuSaveAs.Click 'execute SaveAs Document command Dim command As ICommand = New ControlsSaveAsDocCommandClass() command.OnCreate(m_mapControl.Object) command.OnClick() End Sub Private Sub menuExitApp_Click(ByVal sender As Object, ByVal e As EventArgs) Handles menuExitApp.Click 'exit the application Application.Exit() End Sub #End Region 'listen to MapReplaced event in order to update the status bar and the Save menu Private Sub axMapControl1_OnMapReplaced(ByVal sender As Object, ByVal e As IMapControlEvents2_OnMapReplacedEvent) Handles axMapControl1.OnMapReplaced 'get the current document name from the MapControl m_mapDocumentName = m_mapControl.DocumentFilename 'if there is no MapDocument, disable the Save menu and clear the status bar If m_mapDocumentName = String.Empty Then menuSaveDoc.Enabled = False statusBarXY.Text = String.Empty Else 'enable the Save menu and write the doc name to the status bar menuSaveDoc.Enabled = True statusBarXY.Text = Path.GetFileName(m_mapDocumentName) End If End Sub Private Sub axMapControl1_OnMouseMove(ByVal sender As Object, ByVal e As IMapControlEvents2_OnMouseMoveEvent) Handles axMapControl1.OnMouseMove statusBarXY.Text = String.Format("{0}, {1} {2}", e.mapX.ToString("#######.##"), e.mapY.ToString("#######.##"), axMapControl1.MapUnits.ToString().Substring(4)) End Sub End Class