[.NET2] acceder a une fonction de Form1 dans une autre classe [Résolu]

Signaler
Messages postés
72
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
22 mai 2009
-
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,
J'ai une question toute bete je pense, mais qui me pose un ptit probleme.

Je dispose d'une forme avec ca class (class form1), j ai egalement une classe (class fonction) qui contient toute mes fonctions à utiliser.

Dans ma classe form1, j ai une fonction Affiche qui permet de faire un affichage :/ (originale je sais).
Je voudrais appeller cette fonction dans ma classe fonction. Et la je sais pas faire.
Je ne peux pas faire de Form1 maform = new Form1(); sinon j'instancie 2 fois mes composant.

Comment proceder ?

mon code ressemble à ca :

namespace application1
{
public partial class Form1 : Form
{
private CFonction mesfonction;
public Form1()
{
InitializeComponent();
mesfonction = new CFonction();
}

public void Affiche(string message)
{
textbox1.Text("mon texte");
}

......
}

//class fonction
namespace application1

{
class Fonction
{
public Fonction() {} //constructeur par defaut
// le reste de ma classe
}
}

Merci de m aider :)
Bonne soirée (ou journée)

3 réponses

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
Salut,

namespace application1
{
class Fonction
{
private Form1 _form;

public Fonction(Form1 form)
{
this._form = form;
}

private void UneMethode()
{
this._form.Affiche("blabla");
}
}
}

Mais bon en général on essaie plutôt d'éviter de créer une dépendance du code "de travail" vis à vis de l'interface.

/*
coq
MVP Visual C#
*/
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
Par exemple en définissant dans la classe de gestion des transferts, un event "MessageReceived" qui fournis le message qui vient d'arriver.
Ainsi ton code de traitement réseau etc n'est pas lié à l'interface en elle même, tu pourras le réutiliser dans un autre client par exemple.

/*
coq
MVP Visual C#
*/
Messages postés
72
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
22 mai 2009

merci :)
je sais que se n'est pas tres tres beau de faire ca. Seulement j'en ai besoin pour tester mes fonctions.

En fait je travaille sur un programme sur les Sockets.
J'ai un client et un serveur. Je lance dans une tache ma fonction RecevoirTrame qui permet de lire en permanence les données du socket, et me retourne un string.
Comme ca je peux communiquer entre les deux machines de facon "instantanné" a la maniere d un msn.
C'est la ou je pensais faire appel a une fonction affiche, qui m affiche mon string. (donc dans le code de ma tache

Je vois pas comment faire sinon.
SI vous avez des exemples de code pour la communication entre 2 pc par tcp ip, ca m interresserais.
Merci