VB LAN Chat - Einkommende Nachricht ganz nach oben statt ganz nach unten
VB LAN Chat - Einkommende Nachricht ganz nach oben statt ganz nach unten
Moin Leute,
Ich binn gerade dabei einen LAN Chat zu Programmieren.
Und nun habe ich das Problehm das wenn ich eine Nachricht an einen Partner sende das die nachricht (in einer RichTextBox) ganz unten in der Box kommt.
z.B.
ganz alt
alt
neu
neuer
ich will es aber so haben:
neuer
neu
alt
ganz alt
geht das ?
Hier mein Code:
Imports System.Net.Sockets
Imports System.Threading
Imports System.IO
Public Class Form1
Dim Listener As New TcpListener(55555)
Dim client As TcpClient
Dim message As String = ""
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Listener.Stop()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim listthread As New Thread(New ThreadStart(AddressOf Listening))
listthread.Start()
End Sub
Private Sub listening()
Listener.Start()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Textbox abfragen ob leer
If RichTextBox2.Text = "" Then
MsgBox("Bitte erst eine Nachricht eintragen!", vbExclamation, "Achtung!")
Exit Sub
End If
client = New TcpClient(TextBox1.Text, 55555)
Dim writer As New StreamWriter(client.GetStream())
writer.Write(RichTextBox2.Text)
writer.Flush()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Listener.Pending = True Then
message = ""
client = Listener.AcceptTcpClient()
Dim reader As New StreamReader(client.GetStream())
While reader.Peek > -1
message = message + Convert.ToChar(reader.Read()).ToString
End While
RichTextBox1.Text = RichTextBox1.Text & message & vbCrLf
Else : End If
End Sub
End Class
und dann würde ich gerne wenn ich eine Nachricht schreibe und die Sende das ich zum Senden nicht auf einen Button klicken muss sondern nur Enter (Eingabe) drücken muss und das die nachricht nach dem senden aus der Box wo ich die eigegeben habe gelöscht wird.
mfg DJK
Moin Leute,
Ich binn gerade dabei einen LAN Chat zu Programmieren.
Und nun habe ich das Problehm das wenn ich eine Nachricht an einen Partner sende das die nachricht (in einer RichTextBox) ganz unten in der Box kommt.
z.B.
ganz alt
alt
neu
neuer
ich will es aber so haben:
neuer
neu
alt
ganz alt
geht das ?
Hier mein Code:
Imports System.Net.Sockets
Imports System.Threading
Imports System.IO
Public Class Form1
Dim Listener As New TcpListener(55555)
Dim client As TcpClient
Dim message As String = ""
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Listener.Stop()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim listthread As New Thread(New ThreadStart(AddressOf Listening))
listthread.Start()
End Sub
Private Sub listening()
Listener.Start()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Textbox abfragen ob leer
If RichTextBox2.Text = "" Then
MsgBox("Bitte erst eine Nachricht eintragen!", vbExclamation, "Achtung!")
Exit Sub
End If
client = New TcpClient(TextBox1.Text, 55555)
Dim writer As New StreamWriter(client.GetStream())
writer.Write(RichTextBox2.Text)
writer.Flush()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Listener.Pending = True Then
message = ""
client = Listener.AcceptTcpClient()
Dim reader As New StreamReader(client.GetStream())
While reader.Peek > -1
message = message + Convert.ToChar(reader.Read()).ToString
End While
RichTextBox1.Text = RichTextBox1.Text & message & vbCrLf
Else : End If
End Sub
End Class
und dann würde ich gerne wenn ich eine Nachricht schreibe und die Sende das ich zum Senden nicht auf einen Button klicken muss sondern nur Enter (Eingabe) drücken muss und das die nachricht nach dem senden aus der Box wo ich die eigegeben habe gelöscht wird.
mfg DJK
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 19.06.2010 um 17:47:12 Uhr
Beitrag war gepostet im Bereich "C und C++".
?!???
Ganz falscher Film - da könnte ja auch jemand einen Wulff als Bundespräsident vorschlagen...
Verschoben nach VB und #.NET-Krams.
?!???
Ganz falscher Film - da könnte ja auch jemand einen Wulff als Bundespräsident vorschlagen...
Verschoben nach VB und #.NET-Krams.
Content-ID: 145170
Url: https://administrator.de/contentid/145170
Ausgedruckt am: 25.11.2024 um 11:11 Uhr
22 Kommentare
Neuester Kommentar
Hallo DJKennethcool!
Die geänderte Reihenfolge sollte sich so machen lassen:
Das Reagieren auf die Enter-Taste könnte so gehen:
[Edit] Code für "RichTextBox2" angepasst [/Edit]
Grüße
bastla
P.S.: Das wäre wohl der bessere Bereich für Deine Frage gewesen ...
Die geänderte Reihenfolge sollte sich so machen lassen:
RichTextBox1.Text = message & vbCrLf & RichTextBox1.Text
Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
If InStr(RichTextBox2.Text, vbLf) > 0 Then
client = New TcpClient(TextBox1.Text, 55555)
Dim writer As New StreamWriter(client.GetStream())
writer.Write(RichTextBox2.Text)
writer.Flush()
RichTextBox2.Text = ""
End If
End Sub
Grüße
bastla
P.S.: Das wäre wohl der bessere Bereich für Deine Frage gewesen ...
Hallo DJKennethcool!
Grüße
bastla
das mit den Enter geht irgentwie net
Das Sub war so gemeint, wie es gepostet ist - als Code für das Ereignis "RichTextBox1_TextChanged
" - daher entweder einfach einfügen, oder per Doppelklick auf die RichTextBox1 das entsprechende Sub erzeugen und die Zeilen 2 bis 9 dort einfügen ...Grüße
bastla
Hallo DJKennethcool!
Grüße
bastla
Nr.1: Kann ich es machen das nach dem Absenden der Inhalt (das geschriebene) der RTB2 gelöscht wird ?
Sollte eigentlich schon passieren - siehe ZeileRichTextBox2.Text = ""
Nr.2: Und kann ich noch eine Kleine Info machen wo man erkennt ob die nachricht angekommen ist ?
Leider weiß ich nicht, wie Du feststellen kannst, ob die Nachricht angekommen ist ... PS: Sorry das ich soviel arbeit mache
Never mind - ich muss ja schließlich nicht antworten (mach' es aber zumeist gerne ) ...Grüße
bastla
Hallo DJK!
Leider kann ich Nr. 1 nicht nachvollziehen - bei meinem Test funktioniert das Löschen (allerdings habe ich das Senden nur durch eine "
bei Dir gar nicht mehr erreicht wird - geh' das vielleicht einmal schrittweise (mit F8) durch ...
Bei Nr.3 muss ich leider passen ...
Grüße
bastla
Leider kann ich Nr. 1 nicht nachvollziehen - bei meinem Test funktioniert das Löschen (allerdings habe ich das Senden nur durch eine "
MsgBox
" simuliert) - eigentlich könnte ich mir daher nur vorstellen, dass wegen eines Fehlers (zB beim Senden) die ZeileRichTextBox2.Text = ""
Bei Nr.3 muss ich leider passen ...
Grüße
bastla
Hallo DJK!
Die "
Du kannst übrigens mit dem Code oben auch testen - dazu müsstest Du nur vorübergehend Dein bisheriges "
als Ersatz der Zeile 3 wird's noch etwas informativer ...
Grüße
bastla
Zu Nr.1 Warum eine MsgBox ? (MsgBox sind wie die von Windows [Fehler meldung] )
Da ich nur die Teilaspekte "Reagieren auf die Enter-Taste" und "Löschen der RTB2" testen wollte (und daher auf meiner "Form1" nur die "RichTextBox2" existiert), sieht mein Code so aus: Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox2.TextChanged
If InStr(RichTextBox2.Text, vbLf) > 0 Then
MsgBox("Gesendet!")
RichTextBox2.Text = ""
End If
End Sub
MsgBox
" ist eigentlich auch nicht nötig, aber eine einfache Möglichkeit zu signalisieren, dass der "Then
"-Zweig ausgeführt wird - also eine reine Test-/Debugging-Maßnahme, weshalb auch eine "TextBox
" nicht sinnvoll wäre (da würde ich noch eher ein "Debug.Print
" ins Direktfenster verwenden) ...Du kannst übrigens mit dem Code oben auch testen - dazu müsstest Du nur vorübergehend Dein bisheriges "
Private Sub RichTextBox2_TextChanged(...
" umbenennen. Mit der ZeileMsgBox("Gesendet:" & vbCrLf & RichTextBox2.Text)
Grüße
bastla