Font zuweisen

  • VB.NET

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

    Font zuweisen

    Hallo
    Das ist mein erster Beitrag in diesem Forum, seid bitte gnädig :S

    Mit VB6 hatte ich schon lange programmiert. Jetzt will ich mich in VB2008 einarbeiten. Ich brauche jetzt für
    einfache Sachen ca. 3 mal so lange, wenn das mal kein Fortschritt ist. :rolleyes:

    Ok, meine Frage ist bestimmt ganz einfach zu beantworten.
    Warum kann ich in VB2008 nicht einfach eine Schriftart einem bestehenden Text zuweisen. meinetwegen so:

    (Pseudocode)
    Selection.Text.Style.Bold = Font.Style.Bold '(Falls Bold Boolean=True)

    Warum muss man z.B. so etwas Umständliches schreiben?:

    .SelectionFont = New Font("Cambria", 19, FontStyle.Bold)

    Was soll z.B. das "New" da drinnen?
    Ich will doch keinen neuen Font erstellen, sondern
    einen bereits existierenden ändern.

    Und warum die ganzen Angaben über den Schriftnamen und die Größe?
    Die will ich doch gar nicht verändern, sondern nur ob Fett oder Normal.

    .
    Danke für die schnelle Antwort.
    Kannst du mir aber noch erklären welche Philosophie dahinter steckt?
    Ich stoße laufend auf so komische Sachen mit denen ich nie gerechnet hatte. Wie soll man da von
    selbst drauf kommen, dass so etwas notwendig ist? Dass New eine neue Instanz erzeugt ist schon
    klar. Aber warum braucht man das, nur um eine neue Eigenschaft einem bestehenden Font zu zuweisen?
    Ich schreibe ja auch eher:

    b.color= green
    a.color =b.color

    und nicht

    b.color=green
    a.color= new b.color

    Ich nehme mal an, das das etwas ganz anderes ist. Aber ich verstehe es halt noch nicht.
    da die Eigenschaften wie Bold, FontFamily usw. ReadOnyl sind, somit kannst du deren Wert nur auslesen und nicht setzen, wenn du nun eine bestimmte Eigenschaft des Font ändern willst, so musst du die Eigenschaften der alten Font, welche beibehalten werden sollen im Konstruktor(New) angeben und die anderen entsprechend ändern...
    msdn.microsoft.com/de-de/libra…drawing.font_members.aspx
    hier ist mal die ganze Klasse schön Strukturiert...

    a.color soll woll vom Type System.Drawing.Color sein, somit kannst du nicht a.Color = new b.color schreiben, sondern entweder a.color = b.color(die Farbe von a bekommt den Wert der Farbe von b), oder a.color = Color.dieFarbe, bzw. Color.FromArgb usw...dort wird jeweils eine neue Farbe erstellt...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich hab auch noch was: MSDN
    Da der Font unveränderlich ist, d. h. die Eigenschaften nicht angepasst werden können, können Sie der Font-Eigenschaft nur einen neuen Font zuweisen.Sie können die vorhandene Schriftart jedoch als Grundlage für die neue Schriftart verwenden.

    Du könntest ja theoretisch auf einen Font stossen, der eine Bold-Eigenschaft nicht unterstützt...

    Gesetzmäßigkeit? Ein Font kann nicht verändert werden. Punkt.
    Deshalb erstellt man ein neues Objekt, und weist es der Font-Eigenschaft des Controls zu.

    Der Unterschied ist, ob man eine simple Eigenschaft ändert (Backcolor, Left, Visible), oder einer Eigenschaft ein Objekt übergibt (Font [Font-Object], Location [Point-Object], Size [Size-Object).

    Bei der Positionierung eines Labels sieht es ähnlich aus:

    VB.NET-Quellcode

    1. 'Erzeugt einen Fehler:
    2. Label1.Location.X = 44
    3. 'So ist es richtig
    4. Dim f As New Point
    5. f.X = 4
    6. f.Y = 10
    7. Label1.Location = f


    @PascalN: Wie passt dein Link hier rein? Die Frage ist etwas weg von den Grundlagen...
    @der_Kurt: schöner Link zur MSDN:

    msdn.microsoft.com/de-de/library/…nt_members.aspx
    hier ist mal die ganze Klasse schön Strukturiert...

    :P
    noch zur Color Eigenschaft, Color.Red gibt dir eine komplette Color KLasse zurück, mit den Eigenschaften A=255 R=255 G=0 B=0...
    das ganze sind Shared Properties, welche dadurch auch ohne das Instanzieren einer KLasse zugreifbar sind...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hey der_Kurt.

    Zu diesem Thema hätte ich auch noch eine kurze Frage.
    Und zwar habe ich bis heute nicht verstanden, weshalb ich nicht einfach eine Eigenschaft der Location-Eigenschaft verändern kann, sondern immer ein Objekt zuweisen muss.
    Es ist ja nicht so, dass Location Read-Only ist.
    Weißt du etwas zu diesem Thema?
    Danke erst mal für die vielen Antworten.
    Im Moment sage ich mir halt, dass das mit der ReadOnly Eigenschaft einfach nur
    eine "Macke" von den Entwicklern war. Warum das so ist wird mir wohl niemand
    wirklich sagen können.

    Ich wollte eigentlich nur durch einen RechtsKlick in eine DataGridView-Zelle deren
    Schrift auf Bold stellen. Dass da dann ein ganzer Rattenschwanz von Eigenschaften
    neu erstellt werden musste, fand ich halt sehr übertrieben. Da es oft einen einfacheren
    Weg gibt ein Problem zu lösen, war ich dann doch etwas verwundert über diese
    doch etwas gewöhnungsbedürftige Lösung.
    Zu diesem Thema hätte ich auch noch eine kurze Frage.
    Und zwar habe ich bis heute nicht verstanden, weshalb ich nicht einfach eine Eigenschaft der Location-Eigenschaft verändern kann, sondern immer ein Objekt zuweisen muss.
    Es ist ja nicht so, dass Location Read-Only ist.
    Weißt du etwas zu diesem Thema?

    ich fühl mich jetzt trotzdem mal angesprochen:
    msdn.microsoft.com/en-us/library/system.drawing.point.aspx
    was fällt dir da direkt bei der Überschrift auf? Point Structure die Location Eigenschaft ist vom Type Point und Structures haben es nunmal so ansich, dass man die einzelnen Eigenschaften nicht ändern kann, sondern nur die gesamte Instanz auf einmal festlegen kann...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich versuche mal, es etwas plastisch zu beschreiben:
    Stell dir vor, DU BIST das Control. ;)

    Ich möchte die Eigenschaft "Text" ändern. Dazu sage ich dir einfach die Eigenschaft, und den neuen Wert.
    (-->Wert der Eigenschaft ändern)

    Bei der Eigenschaft "Font" muss ich etwas mehr übergeben: Schriftart, Größe, ob fett, unterstrichen,...
    Ich schreibe alles zusammen auf einen Zettel, und gebe ihn dir. (--> neues Objekt erstellen)

    Wenn ich bei der Font-Eigenschaft jetzt möchte, dass diese nun fett gedruckt wird, müsste ich etwas auf dem Font-Zettel ändern. Den hast aber jetzt du. Also schreibe ich einen neuen Zettel. (--> wieder neues Objekt erstellen)

    Die angesprochene Location-Eigenschaft ist eine Struktur, die - ähnlich dem Font - mehrere Werte übergibt.
    Die Abkürzungen (Left, Top-Eigenschaft) kannst du wiederum "normal" zuweisen.

    Ich hoffe, das Ganze war nicht zu sehr Sesamstrasse...

    mfg, Kurti