smileys toevoegen in programma

Status
Niet open voor verdere reacties.

wakmen

Terugkerende gebruiker
Lid geworden
3 jun 2011
Berichten
1.352
ik wil smilye toevoegen in een programma.
voorbeeld als je : ) ttypt dat je dan dit krijgt :) .
en zo voort
 
Zet een Form_Load event klaar en typ daarin:
Code:
InitSmileys()

Je zult een RichTextBox nodig hebben omdat gewone TextBoxen geen afbeeldingen kunnen weergeven.

In het TextChanged event van de RichTextBox typ je:
Code:
ScanForSmileys()

Plaats dan de volgende code (Niet in een sub of functie!):

Code:
    Dim SmileyTable As Hashtable
    Dim MaxStringLen As Integer

    Public Sub InitSmileys()
        SmileyTable = New Hashtable(3)
        SmileyTable.Add(": D", New Bitmap(My.Resources.icon_cheesygrin))
        SmileyTable.Add(": @", New Bitmap(My.Resources.icon_evil))
        SmileyTable.Add(": |", New Bitmap(My.Resources.icon_neutral))
        SmileyTable.Add(": (", New Bitmap(My.Resources.icon_sad))
        MaxStringLen = 3 'the largest length of an emoticon value
    End Sub

    Public Sub DisposeSmileys()
        For Each img As Image In SmileyTable.Values
            img.Dispose()
        Next
        SmileyTable.Clear()
        SmileyTable = Nothing
    End Sub

    Private Sub ScanForSmileys()
        'Loop through all indices (chars) of the RichTextBox
        For i As Integer = 0 To RichTextBox1.TextLength - 1
            Dim remaininglength As Integer = RichTextBox1.TextLength - i 'the trailing length
            'for each possible length
            For emlength As Integer = MaxStringLen To 1 Step -1
                If emlength <= remaininglength Then
                    'check if this value of this length exists in the hashtable
                    Dim lengthtext As String = RichTextBox1.Text.Substring(i, emlength) 'the part of the text ':)' for example with length 2
                    Dim replacewithimage As Image = SmileyTable.Item(lengthtext) 'get item
                    If Not IsNothing(replacewithimage) Then 'check if it is found
                        'replace
                        RichTextBox1.Select(i, emlength)
                        Clipboard.SetDataObject(replacewithimage)
                        RichTextBox1.Paste()
                        Exit For
                    End If
                End If
            Next
        Next
    End Sub

Let op: In dit voorbeeld worden de smileys uit My.Resources gehaald maar je kan ze ook los vanaf je harde schijf inladen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan