Autor Beitrag
scw1963
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 11.03.11 15:42 
Hallo zusammen,

kann mir jemand sagen, ob und wie ich einzelne Daten(zeilen) eines PropertyGrid enabled/NOTenabled setzen kann? Bisher habe ich nur gefunden, dass das mit dem gesamten Control geht.

Vielen Dank

Stefan


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 11.03.2011 um 14:50
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 11.03.11 16:14 
Hallo,

naja, selber auf enabled/ disabled setzen?
Wenn eine Property einen öffentlichen Getter hat wird sie überhaupt erst im Grid angezeigt.
Und wenn sie einen öffentlichen Setter hat kann sie auch geändert werden, und wenn nicht, kann sie halt nicht geändert werden.
Halt so, wie sich Zugriffsmodifizierer verhalten...
scw1963 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 11.03.11 16:29 
Hm, diese Antwort überfordert mich ein wenig. Ich kann ja PropertyGrid1.Enabled = false setzen. Aber wie komme ich an Zeilen heran, die erst zur Laufzeit erzeugt werden. Hättest du vielleicht ein Stück Codebeispiel?

Vielen Dank
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 11.03.11 16:31 
Im einfachsten Fall den Properties jeweils das ReadOnlyAttribute verpassen(Wenn die ReadOnly Information statisch ist).
Wenn du zur Laufzeit den ReadOnly Status einer Property ändern willst wird es glaube ich komplizierter.

Dazu müsstest du einen TypConverter für deine spezielle Klasse die du im PropertyGrid anzeigen willst schreiben dort die GetProperties Methode überschreiben und die zurückzugebenden PropertyDescriptoren je Property entsprechend zusammenbasteln. Zum Beispiel könnte man dort per TypeDescriptor.AddAttributes den Properties zur Laufzeit das oben genannte ReadOnlyAttribute unter jubeln.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 11.03.11 16:52 
Die Frage ist, ob überhaupt ein PropertyGrid hier überhaupt das beste Control ist (unter www.mycsharp.de/wbb2...d.php?threadid=93838 hat er ja geschrieben, das es sich um
XML-Daten handelt)?

Btw. Crossposts sind im myCSharp-Forum nicht erlaubt - also nicht wundern, wenn dein Beitrag dort bald geschlossen sind - und hier hättest du auch besser darauf hinweisen können...
scw1963 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 14.03.11 09:24 
Welches Control würdest du denn alternativ empfehlen?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 14.03.11 11:21 
Hallo scw1963,

was sind denn deine genauen Anforderungen? Soll der Anwender denn alle Eigenschaften des Objekts verändern können (oder ist das genau der Grund für die Frage nach enabled/disabled?)?

Alternativ bliebe ein DataGridView (hier wären dann die einzelnen Zellen dann horizontal angeordnet, d.h. du würdest nur Header und genau 1 Zeile anzeigen).

Ich selber habe für das Editieren von XML-Daten (d.h. einer konkreten Datenklasse) ein eigenes Control geschrieben, welches ein TableLayoutControl beinhaltet.
Und anhand einer Konfiguration werden dann dynamisch die entsprechenden Controls (z.B. TextBox, ComboBox, DateTimePicker etc.) angezeigt.