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