Entwickler-Ecke
C# - Die Sprache - Dynamische Beschriftung bei Attributargument in propertyGrid
alegria - Fr 28.05.10 13:10
Titel: Dynamische Beschriftung bei Attributargument in propertyGrid
Hallo,
also ich möchte die Bezeichnung der category innerhalb meines propertyGrids dynamisch gestalten. Etwa durch Abfrage einer Resource. Klappt bei den einzelnen Properties auch wunderbar. Nur bei der Category gibts den Fehler:
| Zitat: |
| Ein Attributargument muss ein constant-, typeof- oder Arrayerstellungsausdruck eines Attributparametertyps sein. |
Mein (Beispiel)Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Resources; using System.Threading; using System.Globalization;
namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { myClass mc = new myClass(); propertyGrid1.SelectedObject = mc; }
public class myClass { private string countryName; [CategoryAttribute("DirektTippenGeht")] public string CountryName { get { return new ResourceManager("WindowsFormsApplication2.Resource1", typeof(Resource1).Assembly).GetString("countryName"); ; } set { countryName = value; } } } } } |
Weiß jemand Rat???
Kha - Fr 28.05.10 14:14
Über Umwege sollte das funktionieren: Du erstellst dir eine eigene Attribut-Klasse, über die du jeder Property einen konstanten String wie "WindowsFormsApplication2.Resource1" zuweist. Jetzt musst du zur Laufzeit diesen String auflösen: Du musst von PropertyTab ableiten und GetProperties(object, Attribute[]) überschreiben (siehe auch das Beispiel unter PropertyTab). Dort gibst du deine eigene PropertyDescriptor-Klasse zurück, bei der du endlich Category entsprechend überschreiben kannst. Dann musst du das PropertyTab nur noch dem Grid hinzufügen.
alegria - Fr 28.05.10 15:49
Puh! Also das werde ich wohl allein nicht hinbekommen...
Ne einfachere direktere Methode gibts da nicht? Bei den Properties selbst war es ja relativ einfach, warum ist dann die Description so verdammt kompliziert???
P.S. Bin aber wenigstens nicht der einzige der daran scheitert...
http://www.mycsharp.de/wbb2/thread.php?postid=3603515
Kha - Fr 28.05.10 17:19
alegria hat folgendes geschrieben : |
| Bei den Properties selbst war es ja relativ einfach, warum ist dann die Description so verdammt kompliziert??? |
Weil das PropertyGrid einfach noch nie mehr als eine Behelfslösung war.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!