Vet, Italic en Underine op verschillende plaatsen. (VB2008)

Status
Niet open voor verdere reacties.

Tariq

Gebruiker
Lid geworden
27 okt 2008
Berichten
109
Beste Helpmij profs,

Ik ben bezig met een programma. Daarin heb ik een RichTextBox. Ik wil graag dat ik bijvoorbeeld:

Dit stuk vet heb

Dit stuk schuin

En deze allebei

Binnen één richtextbox

Hoe ga ik dat voor elkaar krijgen?

RichTextBox1.SelectedText = RichTextBox1.Font.Bold

Werkt niet. Daarmee krijg ik true of false, afhankelijk van wat de situatie is.

Ik weet dat het mogelijk moet zijn.

In ieder geval bedankt!

Tariq
 
Code:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyItalicFont As System.Drawing.Font = New System.Drawing.Font("Arial", 12, FontStyle.Italic)
        Dim MyBoldFont As System.Drawing.Font = New System.Drawing.Font("Arial", 12, FontStyle.Bold)
        Dim MyItalicAndUnderlinedFont As System.Drawing.Font = New System.Drawing.Font("Arial", 12, FontStyle.Italic Or FontStyle.Underline)

        RichTextBox1.Text = "abc def ghi"

        RichTextBox1.Select(0, 3)
        RichTextBox1.SelectionFont = MyBoldFont

        RichTextBox1.Select(4, 3)
        RichTextBox1.SelectionFont = MyItalicFont

        RichTextBox1.Select(8, 3)
        RichTextBox1.SelectionFont = MyItalicAndUnderlinedFont

        RichTextBox1.SelectionLength = 0
    End Sub

success ermee
 
Heel erg bedankt!

Weet je misschien ook hoe je ervoor kan zorgen dat ze als ze al vet zijn, dat ze dan weer normaal worden?

In ieder geval bedankt!
 
Ja hoor,
Code:
Dim MyRegularFont As System.Drawing.Font = New System.Drawing.Font("Arial", 12, FontStyle.Regular)

dan gewoon met code het stukje tekst selecteren , en met selectionfont normaal maken (regular).;)
 
Ok, dat werkt, maar ik wil dat ik met hetzelfde knopje dat kan uitvoeren. Ik ben een tijdje bezig geweest met het volgende:

Code:
        Dim FS = RichTextBox1.Font.Size
        Dim FT = RichTextBox1.Font.Name
        Dim Ta
        Ta = 0
        If RichTextBox1.SelectedText = RichTextBox1.Font.Bold Then
            Ta = 1
            Dim MyRegular As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Regular)
            RichTextBox1.SelectionFont = MyRegular
        ElseIf RichTextBox1.SelectedText = RichTextBox1.Font.Italic Then
            Ta = 1
            Dim MyBoldItalic As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Bold Or FontStyle.Italic)
            RichTextBox1.SelectionFont = MyBoldItalic
        ElseIf RichTextBox1.SelectedText = RichTextBox1.Font.Underline Then
            Ta = 1
            Dim MyBoldUnderline As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Bold Or FontStyle.Underline)
            RichTextBox1.SelectionFont = MyBoldUnderline
        ElseIf RichTextBox1.SelectedText = RichTextBox1.Font.Italic And RichTextBox1.Font.Bold Then
            Ta = 1
            Dim MyItalic As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Italic)
            RichTextBox1.SelectionFont = MyItalic
        ElseIf RichTextBox1.SelectedText = RichTextBox1.Font.Underline And RichTextBox1.Font.Bold Then
            Ta = 1
            Dim MyUnderline As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Underline)
            RichTextBox1.SelectionFont = MyUnderline
        ElseIf RichTextBox1.SelectedText = RichTextBox1.Font.Underline And RichTextBox1.Font.Italic Then
            Ta = 1
            Dim MyAll As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Bold Or FontStyle.Italic Or FontStyle.Underline)
            RichTextBox1.SelectionFont = MyAll
        ElseIf RichTextBox1.SelectedText = RichTextBox1.Font.Underline And RichTextBox1.Font.Italic And RichTextBox1.Font.Bold Then
            Ta = 1
            Dim MyL As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Italic Or FontStyle.Underline)
            RichTextBox1.SelectionFont = MyL
        ElseIf Ta = 0 Then
            RichTextBox1.SelectionFont = New System.Drawing.Font(FT, FS, FontStyle.Bold)
        End If
        Dim MyBoldFont As System.Drawing.Font = New System.Drawing.Font(FT, FS, FontStyle.Bold)

Dit geeft een error omdat het niet naar iets oneindig mag verwijzen. Wel werkt de FT en de FS functie.

Hoe krijg ik het toch wel voor elkaar op deze manier?
 
Ik vind de If-Then-Else manieren eigenlijk altijd een beetje een paardenmiddel , maar soms kom je er niet onderuit.

Code:
Public Class Form1

    Dim MyRegularFont As System.Drawing.Font = New System.Drawing.Font("Arial", 12, FontStyle.Regular)
    Dim MyItalicFont As System.Drawing.Font = New System.Drawing.Font("Arial", 12, FontStyle.Italic)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        RichTextBox1.Font = MyRegularFont
        RichTextBox1.Text = "abc def ghi"
        RichTextBox1.Select(4, 3)
        RichTextBox1.SelectionFont = MyItalicFont


    End Sub

    Private Sub SetFontStyle(ByVal InputFont As System.Drawing.Font)

        Dim Start As Integer = RichTextBox1.SelectionStart
        Dim Length As Integer = RichTextBox1.SelectionLength
        RichTextBox1.SelectionLength = 1


        While RichTextBox1.SelectionStart <= ((Start + Length) - 1)
            If RichTextBox1.SelectionFont.Style.ToString = InputFont.Style.ToString Then
                RichTextBox1.SelectionFont = MyRegularFont
            Else
                RichTextBox1.SelectionFont = InputFont
            End If
            RichTextBox1.SelectionStart += 1
        End While
        RichTextBox1.Focus()
        RichTextBox1.Select(Start, Length)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If RichTextBox1.SelectionLength > 0 Then
            SetFontStyle(MyItalicFont)
        End If
    End Sub
End Class

Zelf zou ik het op deze manier doen. Ik ben ook niet helemaal op de hoogte of je per geselecteerd character de fontstyle kan opvragen. Mij lukte het niet, dus heb ik een kleine routine gemaakt. Je kan nu per button een style toevoegen. SetFontStyle(MyItalicFont) kijkt of een character gelijk is aan de MyItalicFont style , zoja .. dan maakt ie de character regular, zoniet dan wordt ie de opgegeven style. Ik denk dat dit is wat je bedoelt of niet?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan