Wort in RichTextBox fett markieren macht Probleme

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von xored.

    Wort in RichTextBox fett markieren macht Probleme

    Hey,

    habe eine absolute Grundlagenfrage, welche mich aber gerade sehr verwirrt.
    Ich möchte gerne ein Wort (das erste!) in einer RichTextBox fett markieren.
    Das wort befindet sich in Variable "Local66". Diese ist von Sprache zu Sprache anders, daher die Variable.
    Beim ersten Ausführen klappt der Code bestens:



    Wenn ich nochmal den gleichen Code ausführe, passiert aber das:



    Das ist der simple Code:

    VB.NET-Quellcode

    1. tbDescription.SelectionStart = 0
    2. tbDescription.SelectionLength = Local66.Length 'Hier die Variable wo sich das Wort/die Wortlänge vom ersten Wort ändern kann
    3. tbDescription.SelectionFont = New Font("Segoe UI", 11, FontStyle.Bold)
    4. tbDescription.SelectionLength = 0


    Wieso macht er das beim zweiten Mal? Das ergibt für mich gerade keinen Sinn..
    Jemand nen Rat?

    Vielen Dank.
    Gruß, xored


    Habe noch rumprobiert, gleiches Phänomen hier:

    VB.NET-Quellcode

    1. ​With Me.tbDescription
    2. .Select(0, Local66.Length)
    3. .SelectionFont =
    4. New Font(Me.tbDescription.SelectionFont, FontStyle.Bold)
    5. End With


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza

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

    xored schrieb:

    VB.NET-Quellcode

    1. tbDescription.SelectionLength = Local66.Length 'Hier die Variable wo sich das Wort/die Wortlänge vom ersten Wort ändern kann
    Fang mal an und trage dort einen festen überschaubaren Wert ein:

    VB.NET-Quellcode

    1. tbDescription.SelectionLength = 42
    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!
    Verstehe ich alles nicht, habe ein neues Projekt gemacht, da klappt der Code oben, mit Variable und mit fester Länge.

    Hier mal mein ganzer Code:

    VB.NET-Quellcode

    1. Dim Description As String = SendRequest("getdescription", ListView6.SelectedItems.Item(0).SubItems(0).Text.Replace(" / ", ""))
    2. Description = Description.Replace("§nbsp§", " ")
    3. Description = Description.Replace("§newLine§", Environment.NewLine)
    4. tbDescription.Text = Description 'Auch wenn ich hier was festes eintrage passiert das Phänomen
    5. 'Der Code ist ja an sich absolut uninteressant..
    6. With Me.tbDescription
    7. .Select(0, 5)
    8. .SelectionFont =
    9. New Font(Me.tbDescription.SelectionFont, FontStyle.Bold)
    10. End With


    Wenn ich eine ganz neue Richtextbox erstelle und den Code da ausführe klappt auch alles, also liegt es nicht an einem verkorksten Skin oder so. Verstehe aber einfach nicht, wieso das bei dem Code oben so rumspinnt.


    Habe nun mal ALLES bis auf die relevante Codestelle gelöscht, trotzdem das gleiche Phänomen. Bei einem neuen Button und neuer Richtextbox nicht. Das ist einfach sinnfrei.


    Habe jetzt in eine Funktion gepackt, welche ich dann aufrufe. Dann klappt es komischerweise.


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „xored“ ()

    Teste den Code an einer Koipie der RTB, bei der es nicht funktioniert.
    Erstell danach eine neue RTB und teste den Code.
    Wenn ersteres nicht klappt, zweiteres aber schon, vergleiche die Einstellungen der RTBs und finde den Unterschied.
    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.
    Ich habe die Ursache.
    Man muss extra nochmal den Text der Textbox leeren bevor man ihn neu setzen darf.

    Quasi so:

    VB.NET-Quellcode

    1. ​ tbDescription.Text = ""
    2. Dim Description As String = SendRequest("getdescription", ListView6.SelectedItems.Item(0).SubItems(0).Text.Replace(" / ", ""))
    3. tbDescription.Text = Description
    4. With Me.tbDescription
    5. .Select(0, 5)
    6. .SelectionFont =
    7. New Font(Me.tbDescription.SelectionFont, FontStyle.Bold)
    8. End With


    Das klappt dann.. Strange, aber hauptsache es klappt nun :D


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Das ist tatsächlich der einzige Unterschied. Durch die Zeile
    .Text = ""
    passiert das Phänomen nicht mehr und es klappt. Wenn in der Richtextbox schon was steht, was vorher nicht auf "" gesetzt wird, dann spinnts.


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza