Font setzen - Text wird abgeschnitten

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von squisheemixxa.

    Font setzen - Text wird abgeschnitten

    Hallo zusammen,


    Ich hab grade ein kleines Problem.
    Ich bin momentan dabei, mich ein wenig mit der TreeView auseinanderzusetzen.
    Das klappt soweit auch sehr gut.

    Nur wollte ich den 1."Oberknotenpunkt" und die Knotenpunkte 2. Ordnung Fett markieren.
    Das klappt an sich auch ganz gut, nur wird dabei immer ein Teil des Textes abgeschnitten.
    Wenn man genau hinguckt, sieht man, dass der "Fette" Text immer an der Stelle abgeschnitten wird, an der der nicht fette Text (so wie er vorher war) aufgehört hat.
    Dabei ist es egal, ob ich den Knotenpunkten manuell per Code die Fette Markierung setze, oder es direkt über das Eigenschaftsfenster der TreeView mache.

    Auch wenn es denke ich mal irrelevant ist, hier mal der verwendete Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim f As New System.Drawing.Font("Microsoft Sans Serif", 8, FontStyle.Bold)
    2. frmtree.Nodes(0).NodeFont = f
    3. frmtree.Nodes(0).ForeColor = Color.DarkBlue
    4. For Each node In frmtree.Nodes(0).Nodes
    5. frmtree.SelectedNode = node
    6. frmtree.SelectedNode.NodeFont = f
    7. frmtree.SelectedNode.ForeColor = Color.SaddleBrown
    8. Next


    Und zu guter letzt noch 2 Bilder von der TreeView, einmal normal (nicht-fette Schrift) und einmal "eingefettet".
    Habt ihr 'ne Ahnung woran das liegen könnte?

    // Nebenbei: Ich meine schonmal ein Thema mit dem gleichen Problem hier gesehen zu haben, nur leider finde ich es nicht mehr.
    Wenn es jemand finden sollte, wäre ich sehr dankbar, wenn er den Link hier posten könnte.


    Gruß, PiasSoft :)
    Bilder
    • nicht fett.PNG

      3,91 kB, 288×175, 131 mal angesehen
    • fett.PNG

      3,89 kB, 288×173, 131 mal angesehen

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

    Hallo zusammen,

    Das ist schonmal eine gute Idee.
    Hatte auch schon daran gedacht, dass es an der Breite liegt. (Ist ja irgendwie auch logisch)

    So, nun habe ich allerdings ein Problem beim Setzen der neuen Breite.
    Ich habe bereits einige Möglichkeiten/Methoden ausprobiert, die aber leider nicht funktioniert haben.
    Die, die ich für am naheliegendsten halte, funktioniert leider auch nicht.
    Hier mal der Code:

    VB.NET-Quellcode

    1. Dim g As Integer = frmtree.SelectedNode.Bounds.Width + 10
    2. frmtree.SelectedNode.Bounds.Size = New Size(g, 16)


    Ich habe mir vorher mal die Höhen - und Breitenwerte der Einträge angeschaut und notiert.
    Dabei habe ich festgestellt, dass die Höhewerte immer 16 sind.
    Die Breitenwerte werden einfach mit 10 addiert (Ob das reicht weis ich nicht, da der Code ja leider nicht geht).
    Daher möchte ich also eine neue Größe setzen (New Size) mit den entsprechenden Werten.
    Eigentlich müsste es doch so funktionieren, oder irre ich mich?

    Bei:

    VB.NET-Quellcode

    1. frmtree.SelectedNode.Bounds.Size = New Size(g, 16)

    Sagt er mir, das der Ausdruck ein Wert sei und nicht als Ziel einer Zuweisung dienen kann.
    Doch setzt man doch normalerweise mit "New Size" eine neue Größe, oder nicht?

    Im Internet bin ich noch auf eine andere Möglichkeit gestoßen, die ich nicht ausprobiert habe, aber wahrscheinlich funktioniert.
    Bei dieser Möglichkeit werden die Einträge mit Graphics.Draw() gezeichnet.
    Diese Möglichkeit finde ich aber als nicht so geeignet.

    Mache ich bei der Sache einfach nur einen Fehler?
    Ich kann mir vorstellen das die Lösung ganz einfach ist.


    Gruß, PiasSoft :)


    // Hat keiner 'ne Idee?

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