private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (previousIndex != listBox1.SelectedIndex) { string room = listBox1.GetItemText(listBox1.SelectedItem); //Recupere le nom de la room selectionnée int index = Room_client.getIndex(room); //Trouve son index if (Client.rooms[index].subscribe == false) //envoi du message subscribe pour la room nouvellement selectionnée au serveur { c.send(new Message(new List <string>() { room }, null, 0)); Client.rooms[index].subscribe = true; //On active la room chez le client } texte.Focus(); lock (discussion) { Client.rooms[previousIndex].save(discussion.Text); //Sauvegarde la discussion dans la mémoire discussion.Clear(); discussion.AppendText(Client.rooms[index].chatbox); //Affiche son texte previousIndex = listBox1.SelectedIndex; } } }
public void Afficher(object sender, Message m) { if (this.discussion.InvokeRequired) { SetTextCallback d = new SetTextCallback(Afficher); //Thread safe : ajout texte à textbox this.Invoke(d, new object[] { this, m }); } else { string text = m.Content[0] + "\r\n"; string room = listBox1.GetItemText(listBox1.SelectedItem); if (m.Room == room) { discussion.AppendText(text); //Affichage dans la textbox si la room qui reçoit le message est selectionnée } else { int id = Room_client.getIndex(m.Room); Client.rooms[id].chatbox += text; //Rajout du message dans la memoire si on ne voit pas la discussion : la taille du string augmente, mais lors de } //l'affichage dans la textbox, la textbox a un algo qui limite la taille } m = null; }