Add an Annotation FeatureClass from a Personal Geodatabase to ArcMap with ArcObjects
Procedure
- Start ArcMap.
- Create a new UIButtonControl.
- Right-click the UIButtonControl and select View Source.
- Copy below code into the UIButtonControl's click event.
Dim strPathName As String
strPathName = "D:"temp"yellowstone.mdb" ' Replace with the name of your Personal Geodatabase
- Modify the value of strPathName to reflect the location of your Personal Geodatabase.
- Copy the code below into the UIButtonControl's click event, immediately after the code you entered in Step 4.
Dim strData As String
strData = "AnnoRoad" ' Replace with the name of your annotation FeatureClass
- Modify the value of strData to point to the annotation Feature Class in your Personal Geodatabase.
- Copy the code below into the UIButtonControl's click event, immediately after the code you entered in Step 6.
' Set up the WorkspaceFactory
Dim pWorkspaceName As IWorkspaceName
Set pWorkspaceName = New WorkspaceName
pWorkspaceName.WorkspaceFactoryProgID = "esricore.AccessWorkspaceFactory"
pWorkspaceName.PathName = strPathName
Dim pDatasetName As IDatasetName
Set pDatasetName = New FeatureClassName
pDatasetName.Name = strData
Set pDatasetName.WorkspaceName = pWorkspaceName
' Use a lightweight Name object to open the table.
Dim pName As IName
Set pName = pDatasetName ' QI
Dim pTable As ITable
Set pTable = pName.Open
Dim pFeatClass As IDataset
Set pFeatClass = ptable
Dim pFeatLay As IFeatureLayer
'IFDOGraphicsLayerFactory::OpenGraphicsLayer IS THE KEY to accessing the data!
Dim pFDOGraphicsLayerFactory As IFDOGraphicsLayerFactory
Set pFDOGraphicsLayerFactory = New FDOGraphicsLayerFactory
'*****************************************
' Modify this line of code
Set pFeatLay = pFDOGraphicsLayerFactory.OpenGraphicsLayer(pfeatclass.Workspace, Nothing, "AnnoRoad")
'*****************************************
'Assign the name in the Table of Contents
pFeatLay.Name = pFeatClass.Name
' Add the annotation to ArcMap
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.ActiveView
pMap.AddLayer pFeatLay
Dim pAV As IActiveView
Set pAV = pMap
pAV.Refresh
- Modify the third argument passed to the OpenGraphicsLayer method to point to the input annotation Feature Class.
- Test the code.
-----------------------------------------------------------
佛对我说:你心里有尘。我用力的拭擦。