FontStyle



  • Hallo ,

    public enum FontStyle
        {
                   Regular = 0,
                   Bold = 1,
                   Italic = 2,
                   Underline = 4,
                   Strikeout = 8,
        }
    

    der FontStyle ist ein enum. Er hat 5 Eigenschaften. Wenn ich diese setzen will muß ich sie bitweise oder verknüpfen. Dann kommt irgendeine Zahl raus.
    z.B. Text soll fett und kursiv sein. Also kommt 3 raus .

    Was ich nur feststellen will , in C++ geht das nicht.

    enum fontstyle{
    
    	regular=0,bold=1,italic=2,underlined=4};
    
    int main()
    {
    
    	fontstyle my;
    
    	my=fontstyle::bold ^fontstyle::underlined;
    
    }
    

    so gehts in CSharp, naja da gibt es halt eine Methode , deswegen gehts wohl

    textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style ^ FontStyle.Bold );
    


  • 😞 Was willst du jetzt genau in C++ machen? Und nachdem du dich mit C# rumgeschlagen hast, warum ausgerechnet C++ oder C++/CLI?

    Außerdem geht das nicht ist keine Fehlermeldung.



  • In C++ gibt es eine implizite Umwandlung von enum nach int und eingebaute Bit-Operationen für int, aber keine implizite Umwandlung von int nach enum. Wenn du das wirklich unbedingt benötigst, kannst du einen Cast verwenden:

    FontStyle bold_underline = (FontStyle) (bold | underline);
    

    (btw, für die Verknüpfung ist | (bitweises ODER) besser geeignet als ^ (bitweises XOR))



  • ok danke.

    ich habs jetzt nochmal in C++ versucht. Klappt aber noch nicht

    enum fontstyle{
    
    	regular=0,bold=1,italic=5,underlined=4};
    
    int main()
    {
        fontstyle my;
    
    	my=(fontstyle) fontstyle::bold | fontstyle::underlined;
    
    }
    


  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C++ (auch C++0x) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Da mußt du noch die Klammern um deinen Ausdruck setzen - der Typumwandlungs-Operator hat eine höhere Priorität als die Bit-Operatoren.



  • Hinzu kommt, dass die Konstanten im umschließenden Scope liegen (die Enum hat keinen eigenen Scope). Soll heißen: anstatt fontstyle::bold heißt es nur bold .


Anmelden zum Antworten