Integration in WinForm Designer

Die Programmiersprache C# und Programmierung im .NET Framework/Mono
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Integration in WinForm Designer

Beitrag von cloidnerux » Di Mai 04, 2010 6:48 pm

Also hier mein Problem:
Ich habe eine Klasse, die ein Farbscheme beschreibt:

Code: Alles auswählen

class ColorScheme
{
   ///Fields/Events/Konstruktor/etc.
   /// Statische Klassen innerhalb der Klasse
   public static ColorScheme Blue = new ColorScheme(...);
   public static ColorScheme Red = new ColorScheme(...);
   public static ColorScheme Green = new ColorScheme(...);
}
Nun will ich im WinForms Designer von Visual Studio einem eigenen Steuerelement, dass eine ColorScheme Klasse als öffentliche Eigenschaft besitzt, nur die Vordefinierten Klassen zuweisen, aber Visual Studio hat im Eigenschaftsfenster die entsprechende Eigenschaft gesperrt, was bedeutet, ich kann es weder anklicken noch verändern, was ich bisher noch direkt im Code gelöst habe.
Zu meinem Unglück konnte ich bisher nichts bei google dazu finden, was daran liegt, dass ich keine passende Beschreibung(Umschreibung) für eben diese Vordefinierten Klasseninstanzen gefunden habe :? ...
Wenn jemand eine direkte Lösung für mein Problem kennt, wäre ich sehr froh, ansonsten würde mir auch die Beschreibung dieses Sprachfeatures reichen.

Edit: Es handelt sich um C# 3.0 im .NET Framework 3.5 und Visual Studio 2008

MfG cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Integration in WinForm Designer

Beitrag von Xin » Di Mai 04, 2010 8:18 pm

cloidnerux hat geschrieben:Nun will ich im WinForms Designer von Visual Studio einem eigenen Steuerelement, dass eine ColorScheme Klasse als öffentliche Eigenschaft besitzt, nur die Vordefinierten Klassen zuweisen, aber Visual Studio hat im Eigenschaftsfenster die entsprechende Eigenschaft gesperrt, was bedeutet, ich kann es weder anklicken noch verändern, was ich bisher noch direkt im Code gelöst habe.
Da ich den WinForms-Designer als eine der größten Krankheiten von VisualStudio ansehe, muss ich sagen, dass ich den eher unfreiwillig verwende.

Ich glaube mich aber daran zu entsinnen, dass man den Properties Attribute mitgeben kann, die das beschreiben. Dafür muss man eine Klasse entwickeln, die dem Designer erklärt, was er mit dem Property machen soll und diese Klasse dem Property über ein Attribut angeben.

Vielleicht ist der Weg schonmal etwas, was Dir Stichwörter für Google liefert. Ich habe das im Quelltext mal irgendwo gesehen, das würde ich auch wiederfinden, aber da ich - wenn ich die Wahl habe - C++ programmiere, habe ich den Code auch nicht daheim. Ich kann erst Donnerstag nachgucken, wie das Attribut hieß.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Integration in WinForm Designer

Beitrag von cloidnerux » Di Mai 04, 2010 8:27 pm

Da ich den WinForms-Designer als eine der größten Krankheiten von VisualStudio ansehe, muss ich sagen, dass ich den eher unfreiwillig verwende.

Ich glaube mich aber daran zu entsinnen, dass man den Properties Attribute mitgeben kann, die das beschreiben. Dafür muss man eine Klasse entwickeln, die dem Designer erklärt, was er mit dem Property machen soll und diese Klasse dem Property über ein Attribut angeben.

Vielleicht ist der Weg schonmal etwas, was Dir Stichwörter für Google liefert. Ich habe das im Quelltext mal irgendwo gesehen, das würde ich auch wiederfinden, aber da ich - wenn ich die Wahl habe - C++ programmiere, habe ich den Code auch nicht daheim. Ich kann erst Donnerstag nachgucken, wie das Attribut hieß.
Das mit der Integration der Atribute in den WinForms Designer ist kein problem, das Funktioniert genauso wie die Property-Grid Komponente, einfach in die Klasse Öffentliche Attribute mit get und set und das Eigenschaftsfenster zeigt es dir an.
Mit

Code: Alles auswählen

[[Category("Kategorie")]
        [Description("Beschreibung")]
        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        [DefaultValue("Default Value(Muss angepasst werden!)")]
Kann man zusätzliche Informationen übergeben.
Selbst eigene Steuerelemente sind kein Problem, entweder von nem Vorhandenen Steruelement Ableiten oder von UserControl/Control.
Bis Donnerstag hab ich warscheinlich selbst was gefunden, ich melde mich dann mit der Lösung, falls gefunden...
Danke für die Bemühungen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Integration in WinForm Designer

Beitrag von Xin » Di Mai 04, 2010 8:53 pm

Soweit ich weiß, musste man bei solchen besonderen Property-Klassen eine Klasse erstellen, die beschreibt, wie das Property gesetzt wird.
Du hast ja einen Datentyp, der kein Primitiv ist und willst eine besondere Betrachtung.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Integration in WinForm Designer

Beitrag von cloidnerux » Di Mai 04, 2010 9:26 pm

Du hast ja einen Datentyp, der kein Primitiv ist und willst eine besondere Betrachtung.
Da hast du recht, und ich hab schon was dazu gefunden:
http://www.codeproject.com/KB/aspnet/de ... ation.aspx
http://www.codeproject.com/KB/webforms/ ... rters.aspx
Werde ich mir Morgen näher zu gemüte führen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten