Property Grid Object Fehler auf Auswahl Combobox aber OK, wenn Combobox gescrollt oder Doppelklickten

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

  •  02-07-2019
  •  | 
  •  

Frage

Ich habe eine Immobilie Grid in C #, A 'PropertyAdapter' Objekt (ein Grund Wrapper um eine meiner Objekte Anzeige relevanten Eigenschaften mit den entsprechenden Tags)

Laden bis

Ich habe einen Typeconverter auf eine der Eigenschaften (Datentyp, die eine Aufzählung der möglichen Werte zurückgibt), als ich die Werte zur Verfügung, die Eigenschaftenraster auf Dezimal und Integer, mit den zwei Methoden beschränken möchten wie folgt

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

Dies ist die Anzeige so, wie ich es auf dem Grundstück Gittern will, und wenn ich das Eigenschaftsfeld im Eigenschaftenraster Doppelklick auf, schaltet er glücklich zwischen Integer und Dezimal. Ähnlich kann ich mit dem Mausrad durch die Optionen in der Unterkunft Combobox eingereicht blättern.

Wenn ich aber die Eigenschaft Feld als Kombinationsfeld verwenden und einen Wert aus der Dropdown-Auswahl, erhalte ich die Standard-Eigenschaftenraster Errorbox mit dem Fehler:

  

Objekt vom Typ ‚System.String‘ nicht   umgewandelt werden eingeben   'Pelion.PM3.Utils.Constants + Datatypes'.

Ich gehe davon aus ich die Converter Überschreibungen im Type-Wandler zu stoppen diese verwenden kann, und wandle sie in eine Enum von Datatypes, aber warum das Eigentum Raster scheitern würde, wenn ich aus der Drop-down-Auswahl statt Doppelklick oder ‚mouseewheeling 'auf den Dropdown-?

War es hilfreich?

Lösung

Wenn Sie aus dem Kombinationsfeld ausgewählt Dropdown, wird der Wert als String zurückgegeben. Ich bin nicht sicher, warum das so ist, aber ich habe in zuvor gesehen passieren. Ich denke, dass im Grunde einen Doppelklick oder das Mausrad-Scrolling Werte aus der Werterfassung ändert, während aus dem Drop-Auswahl ist nach unten wie die Bearbeitung der Feldwert als String zurück. Dann haben Sie die convert den Wert aus einem String an den ENUM-Wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top