laptop and a wrench

Bug

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

Zuletzt veröffentlicht: November 30, 2018 ArcObjects SDK
Bug-ID-Nummer BUG-000117337
EingereichtOctober 9, 2018
Zuletzt geändertJune 5, 2024
Gilt fürArcObjects SDK
Gefunden in Version10.6
BetriebssystemWindows OS
Betriebssystemversion10.0 64 Bit
StatusWill Not Be Addressed

Zusätzliche Informationen

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); } }

Schritte zur Reproduzierung

Bug-ID: BUG-000117337

Software:

  • ArcObjects SDK

Benachrichtigung erhalten, wenn sich der Status eines Bugs ändert

Esri Support App herunterladen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln