Ich versuche zu lernen und zu begreifen, was und wie C# Dinge tut. Ich bin historisch ein Visual Foxpro (VFP) -Entwickler und etwas verwöhnt in den Jahren der visuellen Vererbung, indem ich meine eigene Basis von Benutzersteuerelementen erstellte, die anwendungsweit verwendet werden können.Wie können "Standard" -Werte in überschriebenen WinForm-Steuerelementen verhindert werden?
Beim Versuch, die Parallelen in C# zu lernen, stecke ich auf etwas fest. Sagen wir, ich leite mein eigenes Label-Steuerelement (Steuerelement ist Unterklasse des Labels) definiert mit einer Schriftart "Arial", 10 Punkt. Dann fügt der Designer bei jedem Formular, zu dem ich ihn hinzufüge, automatisch einige Eigenschaftswerte ein, die im Abschnitt "Designer.cs" der Form-Klasse zu sehen sind.
this.LabelHdr2.AutoSize = true;
this.LabelHdr2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
this.LabelHdr2.ForeColor = System.Drawing.Color.Blue;
this.LabelHdr2.Location = new System.Drawing.Point(150, 65);
this.LabelHdr2.Name = "LabelHdr2";
this.LabelHdr2.Size = new System.Drawing.Size(158, 22);
this.LabelHdr2.TabIndex = 5;
this.LabelHdr2.Text = "LabelHdr2";
möchte ich Dinge wie die Schriftart, Farbe, Größe, Auto-Size verhindern, dass jedes Mal, erzeugt immer eine Kontrolle über die Form gelegt wird. Wenn ich später beschließe, die Schriftart von "Arial" 10 auf "Tahoma" 11 zu ändern, müsste ich zu allen Formularen (und allen anderen benutzerdefinierten Steuerelementen) zurückkehren und sie bearbeiten, um sie umzustellen.
In VFP, wenn ich etwas von meiner Basisklasse ändern, erkennen alle Formulare automatisch die Änderungen. Ich muss nichts bearbeiten (mit Ausnahme von möglichen Ausrichtungen durch Dimensionierung Auswirkungen) ... aber Farbe, Schriftart und alles andere sind keine Probleme in VFP ...
In C# muss ich zurück gehen und Ändern Sie jedes Formular so, dass es von den neuen/aktualisierten Werten der Klasse erkannt wird.
Gibt es einen vernünftigen Weg, dies zu vermeiden?
Obwohl die Kommentare von den anderen für eine schreibgeschützte Funktion funktionieren, kann es vorkommen, dass einige der Standardwerte übertroffen werden. Daher mag ich Ihren Kommentar zur Option [DefaultValue (somevalue)]. Ich bekomme jedoch einen Fehler beim Versuch, eine Schriftart zurückzugeben. Der (somevalue) erwartet ein CONSTANT und kein neues obj – DRapp
Versuchen Sie Folgendes: [DefaultValue (typeof (Schriftart), "Microsoft Sans Serif, 10 pt"]] (von dieser URL: http: //social.microsoft.com/ Foren/de-DE/netfxbcl/thread/9acb9a96-d461-4732-b99c-65390b4b53fa) – David
Nein ... das wird immer noch erstellt in der Seite ... this.defLabel1.Font = new System.Drawing.Font ("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((Byte) (0))); Ich denke, ich bleibe (vorerst) die READ ONLY-Option für jetzt. – DRapp