2009-03-24 6 views
0

Meine Basisklassen für Benutzeroberflächensteuerelemente zu bauen ist da. Ich habe Befehlsschaltflächen abgeleitet mit benutzerdefinierten Schriftart Zuordnung und legte ein Formular, alles ist in Ordnung ... Allerdings wird der gleiche Code für die schreibgeschützte Eigenschaft Schriftart eines Textfelds nicht ordnungsgemäß auf dem gleichen Formular erkannt. Es nimmt NUR die Einstellung der FORM und ignoriert seine eigene Schriftartdeklaration.Subclassed Textbox readonly Schriftart nicht auf Formular erkannt

public class MyTextbox : TextBox 
{ 
    [ReadOnly(true)] 
    public override Font Font 
    { get { return new 
      Font("Courier New", 12f, FontStyle.Regular, GraphicsUnit.Point); 
      } 
    } 
} 

Antwort

0

Mit Hilfe von „nobugz“ (Danke), fand ich diesen gleichen Fehler, wenn auch ein ComboBox tun. Mein Ergebnis war die folgende ...

Mein Getter

get { return new Font(...); } 

jedoch in nobugz Antwort, etwas nicht funktionierte ganz richtig mit dem Compiler, so in dem Konstruktor der Klasse

clas MyTextbox... 
{ 
    public MyTextbox() 
    { 
     // it defaults itself from its own read-only font "new" object instance and works 
     base.Font = Font; 
    } 
} 
1

Die Font-Eigenschaft ist eine Umgebungseigenschaft. Wurde es nie zugewiesen, entspricht es automatisch der Font-Eigenschaft des Containersteuerelements. Du hast es nie zugewiesen.

es wie folgt tun:

public class MyTextbox : TextBox { 
    Font mFont; 
    public MyTextbox() { 
     base.Font = mFont = new Font("Courier New", 12f, FontStyle.Regular, GraphicsUnit.Point); 
    } 

    [ReadOnly(true)] 
    public override Font Font { 
     get { return mFont; } 
    } 
} 
+0

Tut mir leid, hat nicht funktioniert. Ich habe Ihren Code wortwörtlich eingefügt und in mein Formular gezogen. Noch bevor das Steuerelement hinzugefügt werden konnte, kam es zurück mit Fehler beim Erstellen von Komponente "myTextbox" ... System.NullReferenceException: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. – DRapp

+0

Auch der Code für meine Befehlsschaltfläche war wörtlich auf das "Schriftart" -Abgabe, und IT funktioniert perfekt ... keine zusätzliche Einstellung der Eigenschaft, und gibt sofort das Font-Objekt über die GETter ... – DRapp

+0

Got it ... see meine selbst antwort, aber deine hilfe ... – DRapp