Bonjour,
Je m'attaque au sockets en c# et j'ai commencé a créer un serveur de chat, mais au tout début du développement, je rencontre déjà un problème : je ne sais pas comment interagir avec le form "ServerForm" depuis ma class "Server"
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Serveur
{
public partial class ServerForm : Form
{
private Server server = new Server();
public ServerForm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
public class Server
{
// Instanciation de " serverForm " de type " ServerForm ", pour pouvoir contrôler la form " ServerForm".
private ServerForm serverForm = new ServerForm();
// Liste utilisée par " socket.select ".
private ArrayList readList = new ArrayList();
// Contiendra le message envoyé aux autres clients.
private string msgString = null;
// Notification de connexion / déconnexion.
private string msgDisconnected = null;
// Message sous forme de byte pour " socket.send " & " socket.recive ".
private byte[] msg;
// Boleen permettant de logger le processing dans un fichier log.
public bool useLogging = false;
// Flag aidant à la synchronisation.
public bool readLock = false;
// Code RTF.
private string rtfMsgEncStart = @"\pard\cf1\b0\f1 ";
private string rtfMsgContent = @"\cf2 ";
private string rtfConnMsgStart = @"\pard\qc\b\f0\fs20 ";
public void Start()
{
// Récupération de l'addresse IP locale.
IPHostEntry ipHostEntry = Dns.Resolve(Dns.GetHostName());
IPAddress ipAdress = ipHostEntry.AddressList[1];
// Et maintenant j'aimerais afficher l'IP (ipAdress) dans la richtextbox1 de ServerForm
}
}
}
Merci d'avance ! :)
[EDIT]
Merci à Alex et Waawi, j'ai résolu mon problème, comme je pense que ça dois arrivé à beaucoup de débutants comme moi, je met le code simplifier et expliqué à la disposition des gens qui ont le même problème que moi ;)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// EXPLICATION :
// On crée un constructeur de la classe depuis laquelle on veux modifier notre form, puis on lui donne comme
// argument un argument du même type que la classe que l'on veux modifier.
//
// Ensuite, on instancie une variable du type du form que l'on shouaite modifier dans la classe depuis
// laquelle l'on veux modifer.
//
// Retournous au constructeur de la classe d'ou l'on modifira notre form, et mettont dans ce constructeur du
// code pour lui dire que la variable de type Form que nous avons tout à l'heure instancié dans la classe depuis
// laquelle on veux modifier notre form est = à l'argument reçus (argument de type Form).
//
// La dernière chose qu'il nous reste à faire c'est de mettre dans la fonction de chargement de notre form
// (form1_Load) une instance du type de la classe depuis laquelle on veux modifier notre form, en passant
// à cette instance l'argument this (this = là où " this " est executé).
//
// Voilà, en utilisant l'instance du type du form que l'on veux modifier, dans la classe ou l'on veux
// modifer cette form, un peux modifier le form, n'oubliez pas de passer l'objet que vous shouaitez modifier
// en publique (Modifier -> Public)
//
// EXPLICATION DE L'EXPLICATION :
// En fait, c'est tout con on doit trouver le nom de la Form form ou s'execute l'interface graphique, ce code
// est en fait égal à un gros GETTER.
namespace Modifier_un_form_depuis_une_autre_class
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ExternClass externClass = new ExternClass(this);
externClass.ModifierPlus();
}
}
public class ExternClass
{
public ExternClass(Form1 form)
{
formAModifier = form;
formAModifier.richTextBox1.Text = "Bonjour";
}
private Form1 formAModifier = new Form1();
public void ModifierPlus()
{
formAModifier.richTextBox1.AppendText("\n" + "Au revoir");
}
}
}