Considérons le cas d'un messager LAN où plusieurs personnes sont en ligne. Je dois sélectionner une personne avec qui discuter. Comment dois-je procéder en C#? Ce que je veux, c'est sélectionner une personne en cliquant sur son nom.Après cela, tout ce que je tape doit être envoyé comme dans le cas du logiciel IP Lanmessenger (en espérant que les gens l'ont utilisé). Quelqu'un pourrait m'aider.MerciSélection d'une personne avec qui discuter en C#
Répondre
Si vous construisez l'interface utilisateur pour un chat et que vous voulez voir tous les gens en ligne l'élément de l'interface utilisateur typique serait une zone de liste, puis le code qui se déclenche sur le On_Click d'un élément dans la boite. Ce code pourrait ouvrir un autre élément d'interface utilisateur pour commencer le chat.
Obtenir la liste des utilisateurs connectés est plus difficile. Vous devrez implémenter une sorte de pattern Observer/Subscriber pour gérer les notifications du protocole de chat que vous implémentez.
GeekPedia a une grande série sur creating a chat client and server in C#.
Pourriez-vous s'il vous plaît me dire le nom de l'événement qui est déclenché quand un article dans la liste est cliqué. Je réalise que le nom de l'événement sur le code doit être On_Click mais quel est le nom dans la liste des événements dans la barre d'outils des propriétés? Merci – Avik
Je ne pense pas que vous voulez On_Click, vous voulez probablement SelectedIndexChanged. –
Si vous voulez garder une trace des utilisateurs, je conseille de coder une application serveur pour gérer toutes les connexions. Voici un exemple rapide (notez ce n'est pas un exemple complet):
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
private TcpListener tcpListener;
private Thread listenerThread;
volatile bool listening;
// Create a client struct/class to handle connection information and names
private List<Client> clients;
// In constructor
clients = new List<Client>();
tcpListener = new TcpListener(IPAddress.Any, 3000);
listening = true;
listenerThread = new Thread(new ThreadStart(ListenForClients));
listenerThread.Start();
// ListenForClients function
private void ListenForClients()
{
// Start the TCP listener
this.tcpListener.Start();
TcpClient tcpClient;
while (listening)
{
try
{
// Suspends while loop till a client connects
tcpClient = this.tcpListener.AcceptTcpClient();
// Create a thread to handle communication with client
Thread clientThread = new Thread(new ParameterizedThreadStart(HandleMessage));
clientThread.Start(tcpClient);
}
catch { // Handle errors }
}
}
// Handling messages (Connect? Disconnect? You can customize!)
private void HandleMessage(object client)
{
// Retrieve our client and initialize the network stream
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
// Create our data
byte[] byteMessage = new byte[4096];
int bytesRead;
string message;
string[] data;
// Set our encoder
ASCIIEncoding encoder = new ASCIIEncoding();
while (true)
{
// Retrieve the clients message
bytesRead = 0;
try { bytesRead = clientStream.Read(byteMessage, 0, 4096); }
catch { break; }
// Client had disconnected
if (bytesRead == 0)
break;
// Decode the clients message
message = encoder.GetString(byteMessage, 0, bytesRead);
// Handle the message...
}
}
Maintenant, notez encore ce n'est pas un exemple complet et je sais que je suis en quelque sorte sur tout cela, mais je l'espère, cela vous donne une idée. La partie de message dans la fonction HandleMessage peut être l'adresse IP de l'utilisateur, si elle se connecte au serveur de conversation/déconnexion et d'autres paramètres que vous souhaitez spécifier. Ce code est tiré d'une application que j'ai écrite pour ma société de pères afin que les employés puissent s'informer mutuellement à partir du CRM personnalisé que j'ai écrit. Si vous avez d'autres questions, veuillez commenter.
Cela dépend de nombreux paramètres, tels que le type de contrôle que vous utilisez pour afficher la liste des utilisateurs, comment vous avez implémenté la communication entre les clients et bien plus encore. Je pense que vous devrez donner plus de détails afin d'obtenir de bonnes réponses. –