[vb.net]set fontfamily only

Pagina: 1
Acties:

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
Ok ik wil van een geselecteerde tekst alleen de fontfamily aanpassen.

normaal gesproken moet het zo:

code:
1
2
3
4
            Input.SelectionFont = New Font( _
               cmbFont.SelectedItem, _
               currentFont.Size, _
               currentFont.Style)


en dit werkt goed, maar nu is het probleem wanneer de geselecteerde tekst meerdere stylen of sizes bevat. Ik heb niks gevonden op msdn waar mee je alleen de fontfamily kan aanpassen. Alle methode's en constructors die enigsinds in de buurtkomen zijn read-only, dus geen set mogelijkheid.

Ook heb ik naar de constructor van Font gekeken, en je kan hem ook aanroepen met alleen de fontfamily en de size, maar dan set hij de style automatisch op regular.

Een omslachtige oplossing zou kunnen zijn, de verschillende font.size en fontstyle per de geselecteerde tekst te vinden en die allemaal per stuk aan te passen. Dit gaat wel maar is dus erg omslachtig, en ik hoopte dat iemand hier een wat makkelijkere oplossing/ suggestie voor heeft.

ps. whoami ik hoop dat dit niet te simpel is :P, heb (trouwens net zoals gisteren, goed rondgekeken en gesearched en geprobeerd. En wat jij gisteren in die reactie zei op mijn combobox-font topic stond al in mijn eerste post, dus daar had ik al naar gekeken, vond het jammer dat je gelijk me topic sloot)

This space for rent. Serious inquiries only please.


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
misschien een al iets minder overdreven oplossing is :

selectedtext splitten per karacter en daarvan de current fontstyle en fontsize ophalen en dus per karakter een new font aan te roepen.

ik ben er dus achter dat je inderdaad karakter voor karakter moet kijken, want anders gaat het niet. Maar nu is het probleem wanneer ik de karakters los haal met getchar of via strip dan gaan de fontsettings verloren. iemand enig idee?

[ Voor 39% gewijzigd door toost op 26-04-2006 20:24 ]

This space for rent. Serious inquiries only please.


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
ik heb inmiddels de oplossing, het moest dus inderdaad karakter voor karakter, maar wanneer je split() of getchar() gebruikte nam hij de fontsettings niet mee maar alleen het karakter. Door SelectionStart en SelectionLength te gebruiken ging het wel:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        Dim selectStart = Input.SelectionStart
        Dim selectLength = Input.SelectionLength
        Dim counter = 0

        For counter = 0 To selectLength - 1
            Try

                Input.SelectionStart = selectStart + counter
                Input.SelectionLength = 1
                Dim currentFont As System.Drawing.Font = Input.SelectionFont
                Input.SelectionFont = New Font( _
                    cmbType.Text, _
                    currentFont.Size, _
                    currentFont.Style)
            Catch ex As Exception
            End Try
        Next

        Input.SelectionStart = selectStart
        Input.SelectionLength = selectLength

[ Voor 22% gewijzigd door toost op 27-04-2006 10:02 ]

This space for rent. Serious inquiries only please.