Format von nur einer Stelle im Text ändern

  • Hallo ich lerne immer Visual Basic und setze es in C# um (Lernart). Nun bin ich recht schnell wieder an meine Grenzen gekommen und wollte fragen wie man nur eine bestimmte Textstelle fett macht in einer Textbox?


    Wollte eine Art Editor machen.


    Ach ja man soll danach ohne den Format also ohne "New Font" weiter schreiben mit der Standard Formatierung.


    Mein erster Versuch


    Code
    1. RichTextBox1.Rtf = FontStyle.Bold


    mfg take

  • [cs]RichTextBox.SelectionFont = New Font(RichTextBox.Font, FontStyle.Bold)
    'oder
    RichTextBox.SelectionFont = New Font("Schriftart", Größe, FontStyle.Bold)[/cs]

  • Hm..also ich habe einen kleinen Satz geschrieben, paar Wörter markiert und per Button fett gemacht. Danach kann ich normal weiterschreiben, wo benutzt du SelectionFont?

  • Bild:
    Unbenannt.JPG


    Code:


    Achtung: Das ist alles nur Test Basis, auch wenn der Code nicht optimal ist :)

  • Hi,
    also in OpenOffice ist es ja auch so, dass wenn man etwas fett markiert und weiterschreibt der ganze Satz so lange fett geschrieben wird, bis man wieder auf den Button drückt. Probier mal das hier:
    [cs]
    'Button_Click (...) Handles Button.Click
    Bold()


    Private Sub Bold()
    If RichTextBox1.SelectionFont IsNot Nothing Then
    Dim currentFont As System.Drawing.Font = RichTextBox1.SelectionFont
    Dim newFontStyle As System.Drawing.FontStyle


    If RichTextBox1.SelectionFont.Bold = True Then
    newFontStyle = FontStyle.Regular
    Else
    newFontStyle = FontStyle.Bold
    End If


    RichTextBox1.SelectionFont = New Font(currentFont.FontFamily, currentFont.Size, newFontStyle)
    End If
    End Sub
    [/cs]


    Markier einen Text, drücke den Button und es müsste fett sein und das solange, bis du den Button nochmal anklickst. Wenn du es jedoch so willst, dass automatisch wieder normal geschrieben werden soll, wenn man Enter drückt, dann benutz das KeyPress-Event und frag Enter ab:
    [cs]
    'RichTextBox_KeyPress (...) Handles RichTextBox.KeyPress
    If e.KeyChar = Chr(13) Then '13 = Enter
    If RichTextBox1.SelectionFont.Bold = True Then
    Bold()
    End If
    End If[/cs]


    Achja und noch was zu deinem Form_Closing-Event, das hier finde ich kürzer:
    [cs]
    While Not Me.Opacity = 0
    Me.Opacity -= 0.1
    Threading.Thread.Sleep(100)
    End While
    [/cs]
    Wegen dem Sleep kann man deine Form nicht mehr bewegen, wenn du das ändern musst, dann führe die While-Schleife in einem Extra-Thread durch.


  • Ich hasse iwi die While Schleifen :D


    Naja, manchmal sind sie schon nützlich..anstatt 1000 mal das Selbe zu schreiben^^
    Kannst auch eine For-Schleife benutzen, aber ich finde sie viel komplizierter^^
    [cs]
    For i as Integer = 0 to (Me.Opacity * 10)
    Me.Opacity -= 0.1
    Sleep(100)
    Next
    [/cs]