Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
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.

VB LAN Chat - Einkommende Nachricht ganz nach oben statt ganz nach unten

Frage Entwicklung VB for Applications

Mitglied: DJKennethcool

DJKennethcool (Level 1) - Jetzt verbinden

18.06.2010, aktualisiert 19.06.2010, 4894 Aufrufe, 22 Kommentare

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.


Mit freundlichen Grüßen DJK
Mitglied: bastla
18.06.2010 um 22:28 Uhr
Hallo DJKennethcool!

Die geänderte Reihenfolge sollte sich so machen lassen:
RichTextBox1.Text = message & vbCrLf & RichTextBox1.Text
Das Reagieren auf die Enter-Taste könnte so gehen:
01.
Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged 
02.
    If InStr(RichTextBox2.Text, vbLf) > 0 Then 
03.
        client = New TcpClient(TextBox1.Text, 55555) 
04.
        Dim writer As New StreamWriter(client.GetStream()) 
05.
        writer.Write(RichTextBox2.Text) 
06.
        writer.Flush() 
07.
         
08.
        RichTextBox2.Text = "" 
09.
    End If 
10.
End Sub
[Edit] Code für "RichTextBox2" angepasst [/Edit]

Grüße
bastla

P.S.: Das wäre wohl der bessere Bereich für Deine Frage gewesen ...
Bitte warten ..
Mitglied: DJKennethcool
18.06.2010 um 22:53 Uhr
Gut das mit ganz nach oben geht ! nur der andere Quelltext wo muss der hin :D ich finde gerade keinen anhaltspunkt
das mit den Enter geht irgentwie net

Mein Aktueller Code:





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

If InStr(RichTextBox1.Text, vbLf) > 0 Then
client = New TcpClient(TextBox1.Text, 55555)
Dim writer As New StreamWriter(client.GetStream())
writer.Write(RichTextBox2.Text)
writer.Flush()

RichTextBox1.Text = ""
End If
End Sub
Bitte warten ..
Mitglied: bastla
19.06.2010 um 00:06 Uhr
Hallo DJKennethcool!
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
Bitte warten ..
Mitglied: DJKennethcool
19.06.2010 um 12:32 Uhr
JO muss ich den alten Code Löschen ?
Oder kann ich den lassen ?
Und noch eine kleine info:
RTB1 = Einkommende nachrichten
RTB2 = Nachrichtschreiben

ich hatte erst nur die RTB1 für den einkommenden Text geschrieben.

Mit freundlichen Grüßen DJK
Bitte warten ..
Mitglied: bastla
19.06.2010 um 13:28 Uhr
Hallo DJKennethcoll!

Ja, sorry; der Code sollte für die "Eingabebox", daher also die RTB2, sein - habe ich oben angepasst ...
Den alten Code für den Button kannst Du auch stehen lassen; den für die RTB1 solltest Du entfernen.

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
19.06.2010 um 16:57 Uhr
Geht irgent wie nicht
Kannst du mir vill. einen Vollen Quelltext geben also so wo alles drin ist (So wie ich oben ein habe ;) )
Oder ein wie ich den Button Programmiere das der button auf enter hört ? (Der Button darf aber nur auf Enter hören wenn das fenster aktiv ist !)
Bitte warten ..
Mitglied: bastla
19.06.2010 um 17:53 Uhr
Hallo DJKennethcool!

Ich hatte eigentlich angenommen, dass Du mit Enter in der RTB2 die Eingabe abschicken wolltest - wozu dann noch den Button?

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
19.06.2010 um 19:42 Uhr
Aso muss ich den löschen ?
Ich wollte den noch da lassen für die die gerne Buttons drücken ;)
Bitte warten ..
Mitglied: bastla
19.06.2010 um 20:24 Uhr
Aso muss ich den löschen ?
Nein, wieso denn?

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
19.06.2010 um 22:11 Uhr
So es geht !
Dann habe ich noch 2 Sachen.
Nr.1: Kann ich es machen das nach dem Absenden der Inhalt (das geschriebene) der RTB2 gelöscht wird ?

Nr.2: Und kann ich noch eine Kleine Info machen wo man erkennt ob die nachricht angekommen ist ?

Mit freundlichen Grüßen DJK

PS: Sorry das ich soviel arbeit mache
Bitte warten ..
Mitglied: bastla
19.06.2010 um 22:25 Uhr
Hallo DJKennethcool!
Nr.1: Kann ich es machen das nach dem Absenden der Inhalt (das geschriebene) der RTB2 gelöscht wird ?
Sollte eigentlich schon passieren - siehe Zeile
RichTextBox2.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
Bitte warten ..
Mitglied: DJKennethcool
19.06.2010 um 23:36 Uhr
Also Nr.1 geht bis jetzt leider nicht
Und Nr.2 wollte ich eigentlich das wenn ich eine nachricht sende und die am anderen PC ankommt das untern z.B. ein Labe ist wo dan steht nachricht angekommen

Mit freundlichen Grüßen DJK
Bitte warten ..
Mitglied: bastla
19.06.2010 um 23:46 Uhr
Hallo DJK!

Zu Nr. 1: Wird die RTB2 gar nicht gelöscht, oder nur nicht, wenn über den Button gesendet wurde?

Zu Nr. 2: Wie gesagt weiß ich leider nicht, wie das Ankommen signalisiert wird bzw geprüft werden kann ...

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
20.06.2010 um 12:55 Uhr
Zu Nr.1 Also das geht überhaupt nicht egal ob ich enter drücke oder den button nutze

Zu Nr.2 Schade

(Nr.3 leider kann ich nur im netzwerk hin und her senden wenn ich den router von dem Switch nehme wieso ?
und ich kann auch nicht an W-Lan gerate schreiben ! Weist du woran das liegt ?)

Mit freundlichen Grüßen DJK
Bitte warten ..
Mitglied: bastla
20.06.2010 um 14:17 Uhr
Hallo DJK!

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 Zeile
RichTextBox2.Text = ""
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
Bitte warten ..
Mitglied: DJKennethcool
20.06.2010 um 16:47 Uhr
Zu Nr.1 Warum eine MsgBox ? (MsgBox sind wie die von Windows [Fehler meldung] )
Meinst du nich TextBox ?

Nr.3 Naja OK ich werde mal nachforschen ;)
Bitte warten ..
Mitglied: bastla
20.06.2010 um 17:00 Uhr
Hallo DJK!
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:
01.
    Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox2.TextChanged 
02.
        If InStr(RichTextBox2.Text, vbLf) > 0 Then 
03.
            MsgBox("Gesendet!") 
04.
 
05.
            RichTextBox2.Text = "" 
06.
        End If 
07.
    End Sub
Die "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 Zeile
MsgBox("Gesendet:" & vbCrLf & RichTextBox2.Text)
als Ersatz der Zeile 3 wird's noch etwas informativer ...

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
25.06.2010 um 12:03 Uhr
Geht leider nicht
Wenn ich es so mache wie du es stehen hast meldet sich: If Listener.Pending = True Then

Mit freundlichen Grüßen DJK
Bitte warten ..
Mitglied: bastla
25.06.2010 um 12:29 Uhr
Hallo DJK!

Kann ich leider jetzt nicht nachvollziehen - und was meinst Du mit "meldet sich"?

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
25.06.2010 um 13:50 Uhr
Also ich kann den Code einfügen und das programm starten nur nach 10Sek. beendet sich das programm und VB sagt das liegt an den code: If Listener.Pending = True Then

Mit freundlichen Grüßen DJK
Bitte warten ..
Mitglied: bastla
25.06.2010 um 16:54 Uhr
Hallo DJK!

Woran es in diesem Fall liegt, kann ich Dir leider auch nicht sagen ...

Grüße
bastla
Bitte warten ..
Mitglied: DJKennethcool
26.06.2010 um 19:32 Uhr
Achso Ok ich werde mal ein bissel ausprobieren ;)

Mit freundlichen Grüßen DJK
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
gelöst Excel: Wie waagerechtes Säulendiagramm von oben nach unten durchzählen? (3)

Frage von Hobi84 zum Thema Microsoft Office ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

Netzwerke
LAN und WLAN je mit gleicher IP (13)

Frage von dauatitsbest zum Thema Netzwerke ...

Notebook & Zubehör
gelöst HP 8770W - LAN Netzwerkproblem (Aufbau, Geschwindigkeit) (7)

Frage von RiceManu zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...