Laden...

PropertyGrid: Steuerung bei Auswahl mehrerer Objekte

Erstellt von snoop83 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.184 Views
S
snoop83 Themenstarter:in
46 Beiträge seit 2006
vor 14 Jahren
PropertyGrid: Steuerung bei Auswahl mehrerer Objekte

Hallo,

nachdem ich nun ca. 30 min bei Google und hier im Forum gesucht aber nichts passendes gefunden habe, werde ich nun doch posten und hoffe nicht wieder mit einer "bitte Suche verwenden" Antwort abgeblockt zu werden.

Mein Problem ist schnell beschrieben: Ich benutze das PropertyGrid in einer WindowsForms-Anwendung um wahlweise eines oder mehrere Objekte zu editieren. Wähle ich nun ein Objekt an, so sollen alle mit Browsable(true) markierten Properties geändert werden dürfen.

Selektiere ich hingegen mehrere Elemente (des gleichen Typs), so binde ich sie als Array an das PropertyGrid und kann sie auch wunderbar bearbeiten. Ich möchte nun aber gern Einschränkungen machen, was die Editierung bei MultipleSelect angeht. So darf beispielsweise das Property "Name" meiner Objekte nicht gleich sein, über das PropertyGrid kann ich dies nach dem Binden mehrerer Objekte jedoch ändern.

Frage: Wie kann ich eine Einschränkung vornehmen, bei der ich Properties freigebe wenn nur 1 Objekt an das PropertyGrid gebunden ist, zur Editierung aber sperre wenn mehrere Objekte gebunden sind?

Beispiel:

public class MyElement
{
  // Dieses Property soll nur editierbar sein, wenn 1 einziges
  // Objekt an das PropertyGrid gebunden ist
  [Browsable(true)]
  public string Name { get; set; }

  [Browsable(true)]
  public int AnyValue { get; set; }
}
830 Beiträge seit 2005
vor 14 Jahren

Hallo snoop83,

da es auf "einfachem Wege" anscheinend nicht geht, da du im I-Net nicht fündig geworden bist, gibt es evtl. eine Lösung mit PropertyDescriptions und ITypedList. Damit ist es möglich jedem beliebigem Typ Properties zu verpassen. Bspw. kann man einem Typ Auto die Eigenschaft Aussentemperatur verpassen, ohne dies im Objektmodel (weil falsch!) machen zu müssen. Man gaukelt es der Datenbindung (um nichts anderes handelt es sich bei diesem Problem mit dem PropertyGrid) einfach nur vor. Also anstatt dem PG ein Array als Datenquelle zu übergeben, nimmst du eine ITypedList (sh. MSDN).

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.