Code:
Imports KNLib
Imports System.IO

Public Class Form1

    '________  .__      ___.                  .__       .__   
    '\______ \ |__| ____\_ |__   ____________ |__| ____ |  |  
    ' |    |  \|  |/ __ \| __ \ /  ___/\____ \|  |/ __ \|  |  
    ' |    `   \  \  ___/| \_\ \\___ \ |  |_> >  \  ___/|  |__
    ' /_______  /__|\___  >___  /____  >|   __/|__|\___  >____/
    '         \/        \/    \/     \/ |__|           \/      

    ' 10.03.2011 // K-Script.cc

    Dim applet As Applet
    Dim WithEvents client As KSClient


    Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

    End Sub

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

        Control.CheckForIllegalCrossThreadCalls = False

        ' Neue Instanz des Applets und des Clienten erstellen

        applet = New Applet
        client = New KSClient(applet)

    End Sub

    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

        ' Form beim Beenden schließen, falls nicht passiert

        System.Environment.Exit(0)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      
        ' Chatsystem auswählen...

        Dim mySystem As New ChatSystem

        Select Case ComboBox1.Text

            Case "Knuddels.de"

                mySystem = ChatSystem.DE

            Case "Knuddels.at"

                mySystem = ChatSystem.AT

            Case "Knuddels.ch"

                mySystem = ChatSystem.CH

            Case "Knuddels.com"

                mySystem = ChatSystem.COM

            Case "Mainfranken-Chat"

                mySystem = ChatSystem.MFC

            Case Else

                mySystem = ChatSystem.DE

        End Select

        ' Wenn Proxy angegeben mit Proxy verbinden, wenn keine angegeben, ohne Proxy verbinden

        If TextBox5.Text = String.Empty And TextBox6.Text = String.Empty Then client.Connect(mySystem) Else client.Connect(mySystem, TextBox5.Text, TextBox6.Text)

        ' Nick einloggen

        client.Login(TextBox2.Text, TextBox3.Text, TextBox4.Text)

    End Sub

    Private Sub client_OnAction(ByVal sender As Object, ByVal Nick As String, ByVal Message As String) Handles client.OnAction

        ' Wenn kein Nick angegeben, ist diese ActionMessage eine Nachricht wie /kiss oder /knuddel

        If Nick = String.Empty Then

            RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Regular)
            RichTextBox1.SelectionColor = Color.Blue
            RichTextBox1.AppendText(">>> " + Message + vbLf)
            RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Regular)
            RichTextBox1.SelectionColor = Color.Black
            RichTextBox1.ScrollToCaret()

        Else

            ' Wenn Nick angegeben, ist diese ActionMessage eine Nachricht wie z.B. /me

            RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
            RichTextBox1.SelectionColor = Color.Black
            RichTextBox1.AppendText(Nick + " ")
            RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Regular)
            RichTextBox1.SelectionColor = Color.Black
            RichTextBox1.AppendText(Message + vbLf)
            RichTextBox1.ScrollToCaret()

        End If

    End Sub

    Private Sub client_OnUserListReceive(ByVal sender As Object, ByVal UserList As System.Collections.Generic.List(Of KNLib.User)) Handles client.OnUserListReceive

        ' Userliste empfangen und jeden Nick in ListView hinzufügen

        ListView1.Items.Clear()

        For Each User As KNLib.User In UserList

            ListView1.Items.Add(User.Name).ForeColor = User.Color

            ' Zusätzlich haben wir noch
            ' User.Color > Die Farbe des Nicks
            ' User.Age > Das Alter des Nicks
            ' User.Sex > Das Geschlecht des Nicks

        Next

    End Sub

    Private Sub client_OnChannelJoin(ByVal sender As Object, ByVal User As KNLib.User) Handles client.OnChannelJoin

        ' User hat den Channel betreten, in ListView anzeigen

        ListView1.Items.Add(User.Name).ForeColor = User.Color

    End Sub

    Private Sub client_OnChannelLeave(ByVal sender As Object, ByVal User As KNLib.User) Handles client.OnChannelLeave

        ' User hat den Channel verlassen, aus ListView löschen

        ListView1.FindItemWithText(User.Name).Remove()

    End Sub

    Private Sub client_OnPing(ByVal sender As Object, ByVal Nick As String, ByVal Key As String) Handles client.OnPing

        ' Wenn uns jemand gepingt hat (Ping wird natürlich automatisch zurückgeworfen)

        writeText("Bot", "Empfange Ping von " + Nick + " mit dem Key " + Key + "...", Color.Red)

    End Sub

    Private Sub client_OnPopup(ByVal sender As Object, ByVal Message As String, ByVal token() As String) Handles client.OnPopup

        ' Ein Popup wurde empfangen

        MessageBox.Show(Message, "Popup")

    End Sub

    Private Sub client_OnPublicMessage(ByVal sender As Object, ByVal Nick As String, ByVal Message As String) Handles client.OnPublicMessage

        ' Eine öffentliche Nachricht wurde im Channel geschrieben, in Log anzeigen

        writeText(Nick, Message, Color.Black)

    End Sub

    Private Sub client_OnPrivateMessage(ByVal sender As Object, ByVal fromNick As String, ByVal toNick As String, ByVal Message As String) Handles client.OnPrivateMessage

        ' Wir haben eine private Nachricht erhalten und zeigen diese in unserem Log an

        RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
        RichTextBox1.SelectionColor = Color.Red
        RichTextBox1.AppendText(fromNick + " (privat an " + toNick + "): ")
        RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Regular)
        RichTextBox1.SelectionColor = Color.Black
        RichTextBox1.AppendText(Message + vbLf)
        RichTextBox1.ScrollToCaret()

    End Sub

    Public Sub writeText(ByVal from As String, ByVal this As String, ByVal color As Color)

        RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
        RichTextBox1.SelectionColor = color.Black
        RichTextBox1.AppendText(from + ": ")
        RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Regular)
        RichTextBox1.SelectionColor = color
        RichTextBox1.AppendText(this + vbLf)
        RichTextBox1.ScrollToCaret()

    End Sub

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

        ' Bei Enter Text an den Channel senden

        If client.IsConnected = True Then

            If e.KeyCode = Keys.Enter Then

                e.SuppressKeyPress = True

                client.SendMessage(TextBox1.Text)

                TextBox1.Clear()

            End If

        Else

            MessageBox.Show("Nicht eingeloggt?!")

        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListView1.Clear()
        RichTextBox1.Clear()
        ' Verbindung vollständig trennen
        MsgBox("Erfolgreich Ausgeloggt!")
        client.Disconnect()

    End Sub

    Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        Form2.Show()
    End Sub


    Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_start.Click
        Timer1.Start()
        Timer1.Enabled = True
        
    End Sub

    Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Timer1.Stop()
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        TextBox1.Text = "/p James:" & TextBox7.Text
    End Sub
End Class