Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème entre classe mère et classe fille

3 réponses
Avatar
Dimitri Travailloux
Bonjour

J'ai une classe de type form dans laquelle sur clic bouton, j'instancie un
TCPClient.

J'aimerai que lorsque mon serveur recoit des données, il transmette
l'information à la classe qui l'a instancié (par exemple j'affiche le retour
serveur dans une textbox sur la form). J'ai l'impression que je dois utiliser
les délégates et les events mais je n'y arrive pas.

Pouvez-vous m'aider ou m'éclairer ?
Merci bien

3 réponses

Avatar
Paul Bacelar
Ce n'est pas très clair.

Ne donnez pas des solutions possibles, ni vos problèmes d'implémentation
d'une solution, mais votre problème initial.

--
Paul Bacelar

"Dimitri Travailloux" wrote
in message news:
Bonjour

J'ai une classe de type form dans laquelle sur clic bouton, j'instancie un
TCPClient.

J'aimerai que lorsque mon serveur recoit des données, il transmette
l'information à la classe qui l'a instancié (par exemple j'affiche le


retour
serveur dans une textbox sur la form). J'ai l'impression que je dois


utiliser
les délégates et les events mais je n'y arrive pas.

Pouvez-vous m'aider ou m'éclairer ?
Merci bien


Avatar
Sebastien Curutchet
Dimitri Travailloux wrote:
Bonjour

J'ai une classe de type form dans laquelle sur clic bouton, j'instancie un
TCPClient.

J'aimerai que lorsque mon serveur recoit des données, il transmette
l'information à la classe qui l'a instancié (par exemple j'affiche le retour
serveur dans une textbox sur la form). J'ai l'impression que je dois utiliser
les délégates et les events mais je n'y arrive pas.

Pouvez-vous m'aider ou m'éclairer ?
Merci bien


Dans ce genre de cas as tu essayé :

class A
{
public delegate void MonEventHandler();
public event MonEventHandler MonEvent;

public A()
{
this.MonEvent += new MonEventHandler(A_MonEvent);
}

private void A_MonEvent()
{
OnMonEvent();
}

protected virtual void OnMonEvent()
{
// Fait quelque chose pour la classe A
}
}

class B : A
{
protected override void OnMonEvent()
{
// Fait quelque chose pour la classe B
}
}
Avatar
Dimitri TRAVAILLOUX
Bonjour

J'ai effectivement réussi à mettre en place ce que je voulais grâce aux
délégués et aux events.

Dans ma classe Form1.Cs qui instancie le TcpClient

TCPClient() CoreClient = new TCPClient();
CoreClient.OnSendMessage += new ServerEventHandler(this.TryConnectToServer);
private void TryConnectToServer(string str)
{
...mon traitement
}

Dans ma classe TCPClient.cs j'ai fait

namespace NeoClient.Network
{
public delegate void ServerEventHandler(string msg);
....
public class TCPClient
{
public event ServerEventHandler OnSendMessage;
...
j'utilise ensuite mon event comme cela

OnSendMessage("user:xxx:xxxxx");
....

Sympa ces délégués et events.

Merci pour ton aide Sébastien

"Sebastien Curutchet" a écrit dans le
message de news:
Dimitri Travailloux wrote:
Bonjour

J'ai une classe de type form dans laquelle sur clic bouton, j'instancie
un TCPClient.

J'aimerai que lorsque mon serveur recoit des données, il transmette
l'information à la classe qui l'a instancié (par exemple j'affiche le
retour serveur dans une textbox sur la form). J'ai l'impression que je
dois utiliser les délégates et les events mais je n'y arrive pas.

Pouvez-vous m'aider ou m'éclairer ?
Merci bien


Dans ce genre de cas as tu essayé :

class A
{
public delegate void MonEventHandler();
public event MonEventHandler MonEvent;

public A()
{
this.MonEvent += new MonEventHandler(A_MonEvent);
}

private void A_MonEvent()
{
OnMonEvent();
}

protected virtual void OnMonEvent()
{
// Fait quelque chose pour la classe A
}
}

class B : A
{
protected override void OnMonEvent()
{
// Fait quelque chose pour la classe B
}
}