laptop and a wrench

Bogue

ISymbolEditor.EditSymbol(...) does not commit edits to existing ISymbol reference parameter.

Dernière publication: November 30, 2018 ArcObjects SDK
Numéro d’ID de bogue BUG-000117337
EnvoiOctober 9, 2018
Dernière modificationJune 5, 2024
S’applique àArcObjects SDK
Version trouvée10.6
Système d’exploitationWindows OS
Version du système d’exploitation10.0 64 Bit
StatutWill Not Be Addressed

Informations supplémentaires

The symbol parameter on EditSymbol is a reference parameter, which means a reference must be passed in and cannot be cast on that assignment. An updated version of the OnClick function that fixes the issue is below: protected override void OnClick() { pStyleGallery = GetStyleGallery(); pStyleStorage = pStyleGallery as IStyleGalleryStorage; pStyleStorage.TargetFile = STYLE_PATH; pStyleStorage.AddFile(STYLE_PATH); pEnumStyleGalleryItem = GetEnumStyleGalleryItem(pStyleGallery); // Gets the specified symbol from the style gallery. IStyleGalleryItem styleGalleryItem = LoadStyleSymbol(pEnumStyleGalleryItem, SYMBOl_NAME); //------------------------------------------------------------------------ // Editing Symbol. //------------------------------------------------------------------------ // Using existing item from style gallery. IMarkerSymbol markerSymbol = styleGalleryItem.Item as IMarkerSymbol; ISymbolEditor symbolEditor = new SymbolEditor(); symbolEditor.Title = "Edit " + styleGalleryItem.Name; // Print marker detail before edit. Console.WriteLine("Before dialog edit."); PrintMultiLayerMarkerDetails(markerSymbol as IMultiLayerMarkerSymbol); // "markerSymbol" is pasted as a reference and is ment to change // directly from the dialog inputs by the user. ISymbol editSymbol = markerSymbol as ISymbol; bool isSymbolEdited = symbolEditor.EditSymbol(ref editSymbol, 0); if (!isSymbolEdited) { //Return a message here if the dialog is canceled. Console.WriteLine("Cancel was clicked."); } else // If the user clicks OK. { // EditSymbol is ment to return "markerSymbol" as an IMultiLayerMarkerSymbol. IMultiLayerMarkerSymbol multiMarker = editSymbol as IMultiLayerMarkerSymbol; // Print marker details after the edit. Console.WriteLine("After dialog edit."); PrintMultiLayerMarkerDetails(multiMarker); styleGalleryItem.Item = multiMarker; pStyleGallery.UpdateItem(styleGalleryItem); } }

Étapes pour reproduire

ID de bogue: BUG-000117337

Logiciel:

  • ArcObjects SDK

Recevoir une notification lorsque le statut d’un bogue change

Télécharger l’application Esri Support

En savoir plus sur ce sujet

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement