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.Geodatabase; namespace Connect2ArcSDE ...{ publicsealedpartialclass MainForm : Form ...{ class private members#region class private members private IMapControl3 m_mapControl =null; privatestring m_mapDocumentName =string.Empty; #endregion class constructor#region class constructor public MainForm() ...{ InitializeComponent(); } #endregion privatevoid 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; IWorkspace pWorkspace = OpenArcSDEWorkspace("132.1.202.33", "5151", "sde","sde", "sde", "SDE.DEFAULT"); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)pWorkspace; FeatureLayer featureLayer =new FeatureLayer(); featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass("FCPMDATA.Parcels");//feature name featureLayer.Name = featureLayer.FeatureClass.AliasName; m_mapControl.AddLayer(featureLayer, 0); } Main Menu event handlers#region Main Menu event handlers privatevoid menuNewDoc_Click(object sender, EventArgs e) ...{ //execute New Document command ICommand command =new CreateNewDocument(); command.OnCreate(m_mapControl.Object); command.OnClick(); } privatevoid menuOpenDoc_Click(object sender, EventArgs e) ...{ //execute Open Document command ICommand command =new ControlsOpenDocCommandClass(); command.OnCreate(m_mapControl.Object); command.OnClick(); } privatevoid 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(); } } privatevoid menuSaveAs_Click(object sender, EventArgs e) ...{ //execute SaveAs Document command ICommand command =new ControlsSaveAsDocCommandClass(); command.OnCreate(m_mapControl.Object); command.OnClick(); } privatevoid menuExitApp_Click(object sender, EventArgs e) ...{ //exit the application Application.Exit(); } #endregion //listen to MapReplaced evant in order to update the statusbar and the Save menu privatevoid 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, diable the Save menu and clear the statusbar if (m_mapDocumentName ==string.Empty) ...{ menuSaveDoc.Enabled =false; statusBarXY.Text =string.Empty; } else ...{ //enable the Save manu and write the doc name to the statusbar menuSaveDoc.Enabled =true; statusBarXY.Text = Path.GetFileName(m_mapDocumentName); } } privatevoid 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)); } public IWorkspace OpenArcSDEWorkspace(string server, string instance, string user,string password, string database, string version) ...{ ESRI.ArcGIS.esriSystem.IPropertySet propertySet =new ESRI.ArcGIS.esriSystem.PropertySetClass(); propertySet.SetProperty("SERVER", server); propertySet.SetProperty("INSTANCE", instance); propertySet.SetProperty("DATABASE", database); propertySet.SetProperty("USER", user); propertySet.SetProperty("PASSWORD", password); propertySet.SetProperty("VERSION", version); IWorkspaceFactory workspaceFactory =new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass(); return workspaceFactory.Open(propertySet, 0); } } }
to run the project ,the follow scene you will be see: