| 

.NET C# Java Javascript Exception

1
Ich habe ein DataTabel in dem ich GUID-Werte habe, die einem bestimmten Text zugeordnet werden. Nun soll in einem PropertyGrid eine Eigenschaft mit einer Auflistung dieser Texte zum auswählen angezeigt werden, aber der Wert soll diee GUID sein, die dann als Eigenschaft auch abgespeichert wird.

Muss ich dazu einen eigenen UITypeEditor schreiben?
News:
09.08.2012
MyKey0815 1,6k 2 9
1 Antwort
1
Ja, aber das ist nicht so schwer. Hier mal ein grober Überblick als Einstieg:

public class MyConverter : GuidConverter
{
// wenn man hier true zurückliefert wird eine Combobox angezeigt
public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; }
// true beschränkt hier die werte auf die vorgegebene Auswahl
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return true; }

#region conversion overrides

public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if (context == null) return null;
// context.Instance entspricht der Klasse, die in deinem Propertygrid
// value ist der ausgewählte String und kann nach Guid gemappt werden
// vorwärts konvertieren und die passende Guid ermitteln
}

public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
// rückwärts konvertieren, herauskommen muss aus dem value deine
// Stringrepräsentation
return "...";
}

public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { return true; }

public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { return true; }

#endregion

public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
// hier kann man eine List<string> erzeugen aus dem Context objekt,
// die der möglichen Auswahlparameter entspricht
}
}


und dann musst du nur noch dein Property dekorieren:

[TypeConverter(typeof(MyConverter))]
public Guid Irgendwas { get; set; }
09.08.2012
puls200 3,8k 7

Stelle deine Datatabel-Frage jetzt!