Richtextbox-Formatierung

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von simon2581.

    Richtextbox-Formatierung

    moin moin,

    ich bin Anfänger und gerade dabei mir soetwas wie einen Hexeditor zu bauen und habe mal eine Frage.

    Ich habe einen String-Array welcher in einer Richtextbox angezeigt werden soll; und ich möchte zwischen jedem Array-Element eine Leerzeile(besser noch, eine Lücke) haben.
    Gibt es eine Möglichkeit der Richtextbox zu sagen das sie den Text, welchen sie anzeigt, automatisch formatiert.

    Das Ergebnis soll dann so ausssehen:

    "0A 0B 0C 0D 0E..."


    Zur Zeit lasse ich die Leerzeichen in einer Schleife hinzufügen. Nur leider dauert das bei großen Dateien und wenn ich sie veränder und speichen möchte muß ich die ganzen Leerzeichen wieder rausfischen.

    Schöner und einfacher wäre es wenn man das String-Array einfach der Richtextbox übergibt und die Richtextbox sich um die formatierung(Leerzeichen/Lücke) kümmert.

    Geht sowas?
    Oder, wie schwer ist es sich ein eigenes Control für sowas zu bauen?

    Achja, ich benutze Visual Basic 2010 Express.

    Gruß
    Simon
    Diesen Text musst Du schon selber schreiben.
    Du gehst durch Deine Bytes und hängst den Wert an den Text der RTB hinten an:

    VB.NET-Quellcode

    1. MyRzb.AppendText(MyByte.ToString("X2") & " ")
    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!
    So ähnlich mache ich das schon.

    VB.NET-Quellcode

    1. Using fs As New FileStream(DataFile, FileMode.Open, FileAccess.Read)
    2. Using br As New BinaryReader(fs, Encoding.BigEndianUnicode)
    3. bytes = br.ReadBytes(fs.Length)
    4. End Using
    5. End Using
    6. Dim hex_value As New StringBuilder(2 * bytes.Length)
    7. Dim chr_value As New StringBuilder(bytes.Length)
    8. Dim offset_value As New StringBuilder(bytes.Length)
    9. Dim vbr_i As Byte = 1
    10. Dim offset_I As Long = 0
    11. For Each i In bytes
    12. hex_value.Append(String.Format("{0:X2}", i) & " ")
    13. Select Case i
    14. Case 0 To 31
    15. chr_value.Append(".")
    16. vbr_i += 1
    17. Case 128 To 160, 173
    18. chr_value.Append(".")
    19. vbr_i += 1
    20. Case Else
    21. chr_value.Append(ChrW(i))
    22. vbr_i += 1
    23. End Select
    24. Select Case vbr_i
    25. Case 17
    26. hex_value.Append(ControlChars.CrLf)
    27. chr_value.Append(ControlChars.CrLf)
    28. vbr_i = 1
    29. offset_value.Append((String.Format("{0:X5}", offset_I)) & "0")
    30. offset_value.Append(ControlChars.CrLf)
    31. offset_I += 1
    32. End Select
    33. Next
    34. RichTextBox1.Text = offset_value.ToString
    35. RichTextBox2.Text = hex_value.ToString
    36. RichTextBox3.Text = chr_value.ToString


    Dachte eigentlich es gibt eine Möglichkeit es ohne Leerzeichen zu machen, da diese beim speichern wieder raus müssen.
    Wenn Du das als Text ohne Leerzeichen speichern willst, nimm doch dazu

    VB.NET-Quellcode

    1. Dim txt As String = RichTextBox1.Text
    2. txt = txt.Replace(" ", "")
    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!