| Numéro d’ID de bogue |
BUG-000117337 |
| Envoi | October 9, 2018 |
| Dernière modification | June 5, 2024 |
| S’applique à | ArcObjects SDK |
| Version trouvée | 10.6 |
| Système d’exploitation | Windows OS |
| Version du système d’exploitation | 10.0 64 Bit |
| Statut | Will Not Be Addressed
L’équipe de développement a examiné le problème ou la demande et a décidé qu’ils ne seraient pas traités. Pour d’autres explications, reportez-vous à la section Informations supplémentaires correspondant au problème.
|
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: