Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#]ComponentModel, Name etc runtime wijzigen

Pagina: 1
Acties:

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 30-11 22:08
Ik ben al de hele dag aan het proberen om de Name, Category en Description van een property van een class tijdens runtime te wijzigen. Deze klasse is wordt namelijk gewijzigd via het PropertyGrid.

Ik ben al bezig geweest met PropertyDescriptor en PropertyDescriptorCollection. Maar daar kom ik geen wijs uit. Alles wat ik probeer resulteert in een error dat het read-only is.

Uiteraard wil ik het proberen op te lossen in de klasse zelf. Maar als het niet lukt, is het misschien een oplossing om direct in het PropertyGrid te gaan zitten kloten? Of lukt dat ook niet?

Een voorbeeldje om het wat duidelijker te maken:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Category("Overview")]
[Description("Contains the description of the selected log")]
public string Description
{
    get
    {
        return this.description;
    }
    set
    {
        this.description = value;
        this.Save();
    }
}

Waarbij ik dus in dit geval de Category en Description tijdens runtime wil wijzigen.

[ Voor 26% gewijzigd door Exterazzo op 02-09-2007 18:21 ]

Audentia


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:51

gorgi_19

Kruimeltjes zijn weer op :9

Afaik kan het niet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 30-11 22:08
Ik ben nu aan het proberen om een nieuwe klasse te maken die overerft van CategoryAttribute. Daarin zou ik dan de GetLocalizedString kunnen overriden. Maar ik weet nog niet of het gaat werken.

Audentia


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 10-11 17:17
Maar waarvoor wil je dit gebruiken? Volgens mij moet je attributes niet eens on rumtime willen zetten?

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 30-11 22:08
Alex schreef op zondag 02 september 2007 @ 18:41:
Maar waarvoor wil je dit gebruiken? Volgens mij moet je attributes niet eens on rumtime willen zetten?
Verschillende talen. Het is me volgens mij nu wel gelukt op deze manier. Maar ik weet niet of er een andere/betere manier is om een applicatie multi-language te maken.

Audentia


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Exterazzo schreef op zondag 02 september 2007 @ 18:44:
[...]

Verschillende talen. Het is me volgens mij nu wel gelukt op deze manier. Maar ik weet niet of er een andere/betere manier is om een applicatie multi-language te maken.
verschillende talen? dan verander je toch .caption of .title of .text en niet de identifier? deze ziet men niet op runtime.

(of zeg ik nu iets doms |:( * roy-t twijfelt)

[ Voor 9% gewijzigd door roy-t op 02-09-2007 21:48 ]

~ Mijn prog blog!


  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 30-11 22:08
Ja in de titel staat name, maar dat moet DisplayName zijn. Maar je kan met het propertygrid gewoon direct klassen veranderen. Dus in mijn voorbeeld heb ik een klasse Log en een instantie van die klasse wil ik kunnen wijzigen via het propertygrid. Dus start tijd, eind tijd en omschrijving etc.
De naam (hoe het terecht komt in het propertygrid) geef je aan via "DisplayName", maar die kan je in je klasse alleen tijdens run-time ingeven.

Dus je veranderd niet de naam van de property, maar alleen de displayname. Nog een klein voorbeeldje:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Category("Time")]
[Description("End time of current log")]
[DisplayName("End Time")]
public DateTime EndTime
{
     get
     {
          return this.endTime;
     }
     set
     {
          this.endTime = value;
          this.Save();
     }
}

Audentia


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack

Pagina: 1