Schrift Formatierung anpassen...

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Schrift Formatierung anpassen...

    Moin! :)
    Ich möchte gerne die Formatierung eines Labels ändern.
    Mein Ziel wäre es, "dick und unterstrichen".
    Leider habe ich bis jetzt keine Antwort gefunden.
    Freue mich auf eure Hilfe!
    BIG THX

    VB.NET-Quellcode

    1. Me.Label1.Font.Bold = True ' Fehler
    2. Me.Label1.Font.Underline = True ' Fehler
    3. Me.Label1.Font = New Font("Arial", 12, FontStyle.Bold And FontStyle.Underline) ' Fehler
    4. Me.Label1.Font = New Font("Arial", 12, FontStyle.Bold, FontStyle.Underline) ' Fehler
    5. Me.Label1.Font = New Font("Arial", 12, FontStyle.Bold + FontStyle.Underline) ' Fehler
    6. Me.Label1.Font = New Font("Arial", 12, FontStyle.Bold & FontStyle.Underline) ' Fehler
    Visual Basic.NET 8o
    MS-SQL
    8o
    Weil man das nicht logisch, sondern binär (?) sehen muss. Folgendes angenommen:
    FontStyle.Bold hat den Wert 1, FontStyle.Underline den Wert 2.
    binär gesehen: 1 => 00000001, 2 => 00000010
    AND = die Bits beider Werte müssen an beiden Stellen gleich sein, damit im Ergebnis an der Stelle 1 rauskommt
    00000001
    00000010
    -----------
    00000000

    OR hingegen sagt: die Bits mindestens eines Werte müssen an einer Stellen 1 sein, um 1 im Ergebnis zu erzeugen
    00000001
    00000010
    -----------
    00000011

    so kombiniert man Werte, die sogenannte Flags sind. Diese kennzeichnen sich dadurch, dass sie innerhalb einer Gruppe von Werten, die eine Einstellung ergeben sollen, Potenzen von 2 sind. diuretisches Beispiel:
    WertA = 1 => 00000001
    WertB = 2 => 00000010
    WertC = 4 => 00000100
    WertD = 8 => 00001000
    und dann kann man eben sagen: WertA OR WertC => 00000001 OR 00000100 => 00000101 => kombinierte Einstellung
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Cheffboss Das funktioniert bei Enums immer dann, wenn die Enums das [Flags] bzw. <Flags>-Attribut haben, und das erkennst Du, wenn die Elementar-Werte 2er Potenzen sind.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Cheffboss Interessant ist auch, sich Flag-Enums mit .ToString() anzusehen.
    Ich nehme mal die Werte von @VaporiZed.
    Da kann man schön Namen von Instanzen machen, die ohne Reihenfolge mit Or verknüpft sind.
    Form, GroupBox mit 4 CheckBoxen, 1 Label:

    VB.NET-Quellcode

    1. Public Class Form1
    2. <Flags>
    3. Private Enum Test
    4. Wert0 = 0
    5. WertA = 1
    6. WertB = 2
    7. WertC = 4
    8. WertD = 8
    9. End Enum
    10. Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged
    11. Dim tt = Test.Wert0
    12. If CheckBox1.Checked Then tt = tt Or Test.WertA
    13. If CheckBox2.Checked Then tt = tt Or Test.WertB
    14. If CheckBox3.Checked Then tt = tt Or Test.WertC
    15. If CheckBox4.Checked Then tt = tt Or Test.WertD
    16. Label1.Text = tt.ToString
    17. End Sub
    18. End Class

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Und dann setzen wir noch eins drauf und machen ein Binär-AND-Beispiel:
    Will man herausfinden, ob eine Gesamteinstellung einen Einzelwert enthält, z.B. ob in RfGs Wert tt quasi ein Test.WertB steckt, prüft man mit
    If (tt AND Test.WertB) = Test.WertB Then Explode()
    Die "Mathematik" dahinter:
    tt = 210 (128 + 64 + 0 + 16 + 0 + 0 + 2 + 0; oder in den jewiligen 2er-Potenzen = 1x2^7 + 1x2^6 + 0x2^5 + 1x2^4 + 0x2^3 + 0x2^2 + 2^1 + 0x2^0) => 11010010
    Test.WertB = 2 => 00000010
    11010010
    00000010
    -----------
    00000010 => ja, der Wert ist in tt enthalten

    Aber wie wir schon schrieben, es sei nochmal erwähnt: Das alles funktioniert nur mit 2er Potenzen als zugeordnete Werte.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    VaporiZed schrieb:

    Und dann setzen wir noch eins drauf und machen
    es richtig. ;)
    Statt

    VB.NET-Quellcode

    1. If (tt AND Test.WertB) = Test.WertB Then Explode()
    machst Du

    VB.NET-Quellcode

    1. If tt.HasFlag(Test.WertB) Then Explode()

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ...was ja das gleiche ist. Richtig, ist sinnvoll, dass Du das erwähnt hattest. .HasFlag() ist angenehmner als das AND-Bitgepfriemel, aber mir ging's um die Erläuterung der AND-Nutzung und -Wirkung (Einstellungsfilter) im Vergleich zu OR (Einstellungszusammenbau). Man könnte jetzt zwar noch ein XOR-Rausfilterungsbeispiel bringen, aber ich glaub, langsam kommen wir vom Thema ab - welches eh längst erledigt ist.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    aber ich glaub, langsam kommen wir vom Thema ab - welches eh längst erledigt ist.


    Richtig, und für mich tut sich da schon fast, nein Sicher, ein neues auf.
    Was genau sind diese Flags? Soweit bin ich noch nicht, aber ich lese aus dem Code das es unter anderem auch für vergleiche genommen werden kann. Nur verstehen tue ich das ganze noch nicht.
    Kann mir einer von euch beiden @RodFromGermany @VaporiZed so erklären das auch ich es schon ansatzweise verstehe?

    @RodFromGermany hat ja ein Beispiel gegeben was ich soweit verstehe. bis auf die "Kleinigkeit" <Flags>.
    Das steht da so unscheinbar im Code, scheint aber eine grosse auswirkung zu haben.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Akanel schrieb:

    bis auf die "Kleinigkeit" <Flags>
    D verweise ich Dich mal auf die Primärliteratur:
    MSDN
    Stackoverflow
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!