Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
PropertyGrid: Steuerung bei Auswahl mehrerer Objekte
snoop83
myCSharp.de - Member



Dabei seit:
Beiträge: 46

Themenstarter:

PropertyGrid: Steuerung bei Auswahl mehrerer Objekte

beantworten | zitieren | melden

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; }
}
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von snoop83 am .
private Nachricht | Beiträge des Benutzers
Friedel
myCSharp.de - Member

Avatar #avatar-1931.jpg


Dabei seit:
Beiträge: 830
Herkunft: Nähe Kassel / Hessen

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers