c # - Hvordan ændrer jeg den type kontrol, der bruges i en .NET PropertyGrid

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et Windows-program, der bruger en .NET PropertyGrid-kontrol. Er det muligt at ændre den type kontrol, der bruges til værdien af ​​en ejendom?


Jeg vil gerne kunne bruge en RichTextBox til at give bedre formatering af inputværdien.
Kan dette gøres uden at oprette en brugerdefineret redaktørklasse?

Bedste reference


For at tilføje din egen brugerdefineret redigering, når brugeren vælger en egenskabsværdi, skal du implementere en klasse, der stammer fra UITypeEditor. Du har derefter mulighed for at vise et lille popup-vindue under ejendomsområdet eller en fuldblæst dialogboks.


Det er rart at du kan genbruge de eksisterende implementeringer. Så for at tilføje evnen til at multiline redigere en streng, gør du bare dette ...


[Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))]
public override string Text
{
    get { return \_string; }
    set { \_string = value; }
}


En anden god, de giver dig, er evnen til at redigere en række strings ...


[Editor("System.Windows.Forms.Design.StringArrayEditor, 
         System.Design, Version=2.0.0.0, 
         Culture=neutral, 
         PublicKeyToken=b03f5f7f11d50a3a", 
         typeof(UITypeEditor))]
public string[] Lines
{
    get { return \_lines; }
    set { \_lines = value; }
}

Andre referencer 1


Du kan kontrollere, om PropertyGrid viser en simpel redigeringsboks, en drop-down-pil eller en ellipsis-kontrol.


Kig op EditorAttribute, og følg det videre derfra. Jeg havde en prøve et sted; Jeg vil forsøge at grave det ud.

Andre referencer 2


Jeg synes, hvad du leder efter, er Custom Type Descriptors.
Du kan læse lidt og komme i gang her: http://www.codeproject.com/KB/miscctrl/bending\_property.aspx[3]


Jeg er ikke sikker på, at du kan gøre enhver kontrol, du vil have, men den artikel fik mig startet på ejendomsgrene.