RichTextBox alle Zahlen verkleinern

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    RichTextBox alle Zahlen verkleinern

    Guten Tag,
    ich bin noch eher ein Anfänger
    und habe eine wichtige Frage zu den
    RichTextBoxen. Wie kann ich es einstellen das alle
    Zahlen verkleinert werden, denn ich möchte gerne
    chemische Formeln (Summenformeln) korrekt darstellen,
    was ich nur kann wenn ich Zahlen tiefer stellen kann.
    Ja ich habe auch schon von MS die Funktionen dafür gesehen
    bekomme es aber nicht hin. So nun wie verkleinere ich
    alle Zahlen SOFORT wenn sie eingegeben werden?

    MrWhitePaper schrieb:

    Ja ich habe auch schon von MS die Funktionen dafür gesehen
    bekomme es aber nicht hin. So nun wie verkleinere ich
    alle Zahlen SOFORT wenn sie eingegeben werden?


    Im TextChanged Event der RichTextBox schon ausprobiert?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Jedes Control kann zu bestimmten Zeitpunkten ein Event (Klick, DoubleClick, TextChanged, CheckedChanged, uvm.) auslösen. Dieses kannst du abonnieren. Dazu klicke im Designer das Control an. Dann im Eigenschaften Fenster (Da wo du Namen und so vergeben kannst) oberhalb den Tab mit dem Blitz anwählen. Dort werden die Events aufgelistet, die das Control auslösen kann. Doppelklick in die rechte Spalte des Events, dann springt Visual Studio in die Code Ansicht und fügt dir den benötigten "Event Code" ein. In diesem Block kannst du dann deinen gewünschten Code schreiben.

    Könnte dann so aussehen:
    Private Sub Button1_Click(sender As Objekt, e As ClickEventArgs )Handles Button1.Click

    End Sub
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Vielen Danke für deine ausführliche Erklärung. Werde es jetzt mal versuchen und ich bin recht zuversichtlich dass es funktioniert. Wenn ich dann dieses Event erstellt habe was ich nun habe
    , wie kann der Quellcode dafür nun aussehen, da ich ja alle Zahlen auswählen muss also 0 - 9 und diese dann tiefer stellen muss?!

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

    Wie du die Zahlen verkleinerst weiß ich nicht auswendig. Dachte du hättest den Part schon...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    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 ist ein ähnliches Thema, behandelt aber nicht dies dass alle Zahlen tief gestellt werden und der Rest nicht, sondern leider auch ganze Wörter, ich habe versucht
    den Quellcode so umzuschreiben dass er für meine Anwendung optimal ist, aber was rauskommt ist nur eine RichTextBox wo alles sehr verbuggt ist und nichts nach den
    Anwendungsmöglichkeiten von mir da ist, was mir leider nicht weiterhilft. Trotzdem danke!
    Das tut mir leid. Allerdings scheint es mit dem Code doch ganz gut zu klappen.
    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.




    Wie hast du das hinbekommen? Ich habe es versucht, aber bei mir kam nur Müll heraus?!
    Könntest du mir vielleicht verraten wie dein Code, oder der Code dafür lautet, weil ich nun schon wirklich lange
    suche, und es damit auch nicht hinbekommen habe... :(

    So habe ich es auch schon versucht aber es funktioniert nicht mal ansatzweise...

    Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
    If IsNumeric(RichTextBox1.Text) Then
    RichTextBox1.SelectionCharOffset = -10

    ElseIf Not IsNumeric(RichTextBox1.Text) Then
    RichTextBox1.SelectionCharOffset = 0
    End If
    End Sub

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

    Ah. Eigeninitiative. Es fehlen zwar die CodeTags. Und IsNumeric ist ja sowas von VB6. Aber sei's drum:
    Aufgrund mangelnder Zeit ist mit CareForTheMoment ein kleiner Hack drin. Aber ohne den würde bei der CheckCheckBoxStates eine Endlosschleife entstehen. Daher bitte Nachsicht.
    Text auswählen und CheckBox anklicken. Scrollt man nun durch den Text, werden die CheckBoxen automatisch entsprechend abgehakt. Gemischter Text wird nicht TriState-mäßig angezeigt. Aber ist in Word wohl auch nicht so, oder?

    VB.NET-Quellcode

    1. Public Class FrmMain
    2. Private StandardRichTextBoxFont As Drawing.Font = Nothing
    3. Private SmallerRichTextBoxFont As Drawing.Font = Nothing
    4. Private CareForTheMoment As Boolean = True
    5. Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. StandardRichTextBoxFont = RichTextBox1.Font
    7. SmallerRichTextBoxFont = New Drawing.Font(RichTextBox1.Font.Name, RichTextBox1.Font.Size - 2)
    8. End Sub
    9. Private Sub ChbTextIsRaised_CheckedChanged(sender As Object, e As EventArgs) Handles ChbTextIsRaised.CheckedChanged
    10. If CareForTheMoment Then ToggleTextDisplaceMentAndFontSize(5)
    11. End Sub
    12. Private Sub ChbTextIsSunken_CheckedChanged(sender As Object, e As EventArgs) Handles ChbTextIsSunken.CheckedChanged
    13. If CareForTheMoment Then ToggleTextDisplaceMentAndFontSize(-5)
    14. End Sub
    15. Private Sub ToggleTextDisplaceMentAndFontSize(PixelOffset As Integer)
    16. Dim NormalizeText = (RichTextBox1.SelectionCharOffset = PixelOffset)
    17. RichTextBox1.SelectionCharOffset = If(NormalizeText, 0, PixelOffset)
    18. RichTextBox1.SelectionFont = If(NormalizeText, StandardRichTextBoxFont, SmallerRichTextBoxFont)
    19. CheckCheckBoxStates()
    20. RichTextBox1.Select()
    21. End Sub
    22. Private Sub RichTextBox1_SelectionChanged(sender As Object, e As EventArgs) Handles RichTextBox1.SelectionChanged
    23. CheckCheckBoxStates()
    24. End Sub
    25. Private Sub CheckCheckBoxStates()
    26. CareForTheMoment = False
    27. ChbTextIsRaised.Checked = (RichTextBox1.SelectionCharOffset = 5)
    28. ChbTextIsSunken.Checked = (RichTextBox1.SelectionCharOffset = -5)
    29. CareForTheMoment = True
    30. End Sub
    31. End Class

    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.
    Hallo, habe es gerade mal versucht und es funktioniert klasse. Ich versuche es nun noch so umzuschreiben dass es bei jeder Zahl einfach automatisch alles tiefstellt. Vielen Dank!

    30min später:
    So nun habe ich mal etwas mit dem Programmcode herumprobiert aber habe immer noch das Problem dass wenn ich es mit der Numeric Methode machen will, dass wenn eine Zahl eingetragen wird es automatisch die CheckBox2 oder auch ChbTextIsSunken aktiviert. Das habe ich mit dem RichTextBox1_TextChanged Event gemacht... es geht aber nicht so ganz... also irgendwie verwirrend... noch irgendeinen Tipp wie man es so mogeln könnte dass es alle Zahlen eben tiefer stellt?

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

    @MrWhitePaper Dein Problem besteht darin, dass Du Dein Gesamtproblem mit einem Aufwasch gelöst bekommen willst.
    Ein für einen Anfänger unlösbare Aufgabe.
    Also:
    Kristallisiere aus Deinem Vorhaben alle einzelnen disjunkten Teilaufgaben heraus
    • Text einer RTB markieren
    • markierten Text einer RTB umformatieren
    • Tastendrücke erkennen
    • ermitteln, ob eine gedrückte Taste ein numerischer Wert ist
    • ...
    Löse jedes dieser Teilprobleme separat und unabhängig voneinander in je einem neuen Projekt :!:
    Diese kleinen Snippets speicherst Du Dir mit nem ordentlichen Kommentar, Du brauchst sie gewiss später wieder.
    Und dann setzt Du all die fertigen Snippets zu Deinem Programm zusammen, in einem neuen Projekt natürlich.
    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!