2009-07-23 9 views
1

Ich verwende das PropertyGrid-Steuerelement in einer WinForms-Anwendung. Das Fenster selbst bindet an eine Klasse, die eine Liste von Objekten enthält. Während ich es vorziehen würde, wenn das Gitter einfach erweitert wird und der Benutzer die Elemente wie eine Baumansicht ändern kann, werde ich mich mit dem Sammlungs-Editor begnügen wenn es wird aufhören, die Mitglieder als "Roswell.Windows.Command.Model "(Der vollständig aufgelöste Klassenname)..NET-EigenschaftGrid-Auflistung Editor und Liste <T>

Ich habe das DisplayName-Attribut sowohl auf die containing-Eigenschaft als auch auf die Klasse selbst angewendet, aber das Sammlungs-Editor-Fenster selbst scheint es zu ignorieren.

(FWIW, das ist .NET 3.5 in VStudio 2008.)

Irgendwelche Vorschläge? Ich habe gegoogelt (und SO!), Bis ich blau im Gesicht bin.

Antwort

2

Sie können die ToString Methode überschreiben, ein schöneres Wert (C# Beispiel)

class MyClass 
{ 
    public string SomeValue { get; set; } 

    public override string ToString() 
    { 
     return string.Format("SomeValue={0}", this.SomeValue); 
    } 
} 
+0

Großartig! Irgendwelche Ideen, wie ich die Sache als eine erweiterbare Liste im Raster selbst erscheinen lasse, anstatt mich auf den Sammlungs-Editor zu verlassen? –

+0

Ich weiß nicht von ganz oben, das mit einem Array zu erreichen, aber Sie sollten nachforschen, einen TypeConverter (wie von leppie vorgeschlagen) und einen UI Type Editor zu implementieren. –

2

Sie ToString()

  • oder außer Kraft setzen kann bieten -

eine TypeConvertor für Ihre Klasse implementieren oder Eigentum.

+0

Das hat den Trick gemacht. Natürlich war es etwas komplizierter als ich erwartet hatte, aber es hat sicherlich funktioniert. Ich würde dich wieder wählen, wenn ich könnte !! –

+0

@Mike - bist du überhaupt in TypeConverter gegangen? Wenn ja, können Sie Links, Code oder Artikel bereitstellen, die die entsprechenden Schritte beschreiben? – Maslow