Proprietà griglia Oggetto non riuscito nella selezione della casella combinata ma OK quando la casella combinata scorreva o faceva doppio clic

StackOverflow https://stackoverflow.com/questions/113644

  •  02-07-2019
  •  | 
  •  

Domanda

Ho una griglia di proprietà in C #, che carica un oggetto "PropertyAdapter" (un wrapper di base attorno a uno dei miei oggetti che mostra proprietà pertinenti con i tag appropriati)

Ho un TypeConverter su una delle proprietà (DataType, che restituisce un elenco di possibili valori) in quanto desidero limitare i valori disponibili alla griglia delle proprietà su Decimale e Intero, con i 2 metodi come segue

public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
    return true;
}

public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
    return new StandardValuesCollection(new List<Constants.DataTypes>() { Constants.DataTypes.Decimal, Constants.DataTypes.Integer });
}

Viene visualizzato esattamente come lo voglio sulla griglia delle proprietà e quando faccio doppio clic sul campo delle proprietà nella griglia delle proprietà, cambia felicemente tra Integer e Decimal. Allo stesso modo posso usare la rotellina del mouse per scorrere le opzioni nella casella combinata della proprietà archiviata.

Se tuttavia utilizzo il campo della proprietà come casella combinata e seleziono un valore dall'elenco a discesa, visualizzo la casella di errore della griglia della proprietà standard con l'errore:

  

L'oggetto di tipo 'System.String' non può   essere convertito in tipo   'Pelion.PM3.Utils.Constants + DataTypes'.

Suppongo di poter utilizzare le sostituzioni del convertitore nel convertitore di tipi per intrappolarle e convertirle in un Enum of DataTypes, ma perché la griglia delle proprietà fallirebbe quando seleziono dal menu a discesa invece di fare doppio clic o 'mouseewheeling "sul menu a discesa?

È stato utile?

Soluzione

Se selezionato dalla casella combinata a discesa, il valore viene restituito come stringa. Non sono sicuro del perché, ma l'ho già visto accadere prima. Penso che fondamentalmente il doppio clic o lo scorrimento della rotellina del mouse cambi i valori dalla raccolta di valori, mentre la selezione dal menu a discesa è come modificare il valore del campo come una stringa. Quindi, hai il valore convertito da una stringa al valore enum.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top