IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Utiliser une autre classe [Débutant]


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Utiliser une autre classe
    Bonjour et désolé si ce meme probleme à déjà été résolu, mais je ne l'ai pas trouvé, peut etre par ce que je ne sais pas quoi mettre comme titre precis.

    Je suis sur visual studio;
    J'ai deux classes plincipales:
    _Celle qui gere et interagit avec mon interface visuelle, "Form1".
    _Celle qui contient mes calculs, "Fonctions";
    (voir image)

    Nom : c#.PNG
Affichages : 131
Taille : 3,8 Ko

    Je veux en gors en apuyant sur un bouton, affiché une valeur (calculée dans "Fonctions".

    Alors voici ce que j'ai fait:

    Dans "Fonctions"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    namesapce WindowsFormsApplication5
    {
              Class Fonctions
               {   
                     int b;
                     public void ab(int b)
                     {
                            b = 10;
                      }
                }
    }
    Dans "Form1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    namespace WindowsFormsApplication5
    {
      public partial class Form1 : Form
           {
               Fonctions visco = new Fonctions();
               int a;
     
               public void button1_Click(object sender, EventArgs e)
              {
                    visco.ab(b);
                    label5.Text = Convert.ToString(b);
               }
           }
    }
    Quand je lannce, rien ne s'affiche...
    Pouvez vous m'aider s'il vous plait?

    je ne vous ai pas mis les "using system" et autres qui sont des "répertoires de fonctions"

    En réalité j'aurai des calculs plus importants mais pour etre sur que je comprenne bien et que d'autres débutants comprennent j'ai essayé de faire simple.

    Vous remarquerez du débutant que je suis; je n'ai pas renomé les form, namespace etc... tout simplement car je ne sais pas comment on fait, et ce que c'est exactement...(jai peur d'y toucher et je n'ai rine trouvé qui explique clairement a mon gout)


    Par avance merci et désolé si c'est déjà expliqué ailleur.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    mets les balises code stp autour de ton code, on est vendredi il donne mal à la tête ton post !

    Surtout que le code est pas très compréhensible, il ne doit pas compiler en l'état je pense, mais dit nous simplement ce que tu veux et l'on avancera ensemble étape par étape.
    Dans tous les cas je ne peux que te conseiller de trouver sur ce site ou ailleurs de bon tuto/cours/exemple un peu partout pas forcément sur ce que tu veux faire exactement mais sur la programmation object en général, sur le C# ... Certe à un moment il faut se lancer mais sans aucune connaissance de base c'est forcément plus compliqué.

    Bon courage,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Okay désolé je n'avais pas vu ma mise en forme, que je l'ecrivais j'avais mis toutes les tabulations... doù l'option "prévisualisation" que je viens de voir...

    Oui je n'ai pas tous mis le programme car j'ai déjà plein de textbox, scrollbar, plus tous mes vraies calculs....

    Simplement;
    je veux faire un calcul dans une classe "fonctions"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class Fonctions
        {
            int b;
     
            char Fluid;
     
            public void communication()
            {
     
            }
     
            public void a(int b)
            {
                b = 10;
            }
        }
    Et dans une autre classe qui gere les textbox, boutons, labels..., je veux afficher le resultat en appuyant sur le bouton pour le moment; j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     public partial class Form1 : Form
      {
            Fonctions visco = new Fonctions();
            int c;
     
            public Form1()
            {
                InitializeComponent();
            }
            public void button1_Click(object sender, EventArgs e)
            {
               visco.a(c);
               label5.Text = Convert.ToString(c);
             }
      }
    j'espère avoir été assez clair.

    Merci bien en tout cas de traiter mon sujet si rapidement c'est super cool....

    Pour info, j'ai des bases en langage C et légerement en Object avec quelques programmes simplets d'ARDUINO sais savoir que c'était de l'Object...

  4. #4
    Membre actif
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 127
    Points : 288
    Points
    288
    Par défaut
    Bonjour,
    Il y a plusieurs soucis :
    Ta variable c n'est pas assignée.
    Si tu veux modifier la variable c qui est un type valeur, il faudra la passer par référence à ta méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int c = 0;
    Fonctions f = new Fonctions();
    f.a(ref c);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Fonctions
        {
     
            public void a(ref int b)
            {
                b = 10;
            }
        }

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Merci ça pique moins les yeux

    Déjà un problème =>
    je veux faire un calcul dans une classe "fonctions"
    Ok, mais la je vois aucun calcul dans Fonctions (par convention le nom d'une classe commence toujours par une majuscule, et l'object issue de cette classe par une minuscule), de plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            public void a(int b)
            {
                b = 10;
            }
    n'a aucun sens, elle serait vide ce serait pareil ! Je ne comprends même pas ton intention... là ta ''fonction'' ne retourne rien (est-ce donc vraiment une fonction...) elle prend une variable b en parametre puis elle affecte une valeur a ce paramètre, ce qui n'aura aucun effet puis que les types valeur sont passés par valeur et non par référence, donc a la sortie de cette 'fonction' absolument rien n'aura changé, ça doit pas beaucoup te parler mais si tu trouve un bon tuto sur le c# ou l'object en général ca te parlera plus ....
    On va plutôt partir sur un cas concret, tu veux obtenir la puissance de 2 d'un nombre par exemple, donc suivant ce que tu nous a donné tu devrais avoir un code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
        class Fonctions
        {
            int b;
     
            char Fluid;
     
            public void communication()
            {
     
            }
     
            public int Puissance2(int b) //public car je veux avoir accès à la fonction en dehors de la classe, int le type de retour, Puissance2 un nom de fonction qui parle
            {
                return b * b; //la valeur retournée sera la multiplication du paramètre par lui même pour obtenir la puissance de 2.
            }
        }
    ainsi tu pourras écrire dans Form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public void button1_Click(object sender, EventArgs e)
            {
               int result = visco.Puissance2(c);
               label5.Text = result.ToString();
             }
    par contre suivant ce que tu nous a donné c n'est jamais affecté donc je pars du principe qu'il aura une valeur...

    Mais je réitère mon conseil d'aller lire un bon cours sur la programmation object et le c#, il y a beaucoup de notion de base de la programmation et de l'object qu'il semble te manquer, sans ça tu n'arrivera jamais à avancer...

    Bon week end,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Pour l'exemple j'aurai enlevé les deux lignes de code ci-dessous qui peuvent porter à confusion pour un novice :
    Il s'agit de la propriété ?
    Il s'agit du paramètre ?
    A ok, il faut donc que je déclarer les paramètres dans la class ...

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je te conseil tout de même d'utiliser un minimum le passage par ref et t'orienter/prendre l'habitude de ce que propose J@ckHerror, c'est à dire utiliser une valeur de retour.

    C'est plus dans la logique de programmation du C# (ascenseur get/set) et ça t’évitera des ennuies dans le futur.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Okay ça marche!

    Je n'avais jamais vu le fameux "ref".

    En voici une définition pour tous.
    Ref:
    Le mot clé ref entraîne le passage d'un argument par référence, et non par valeur.


    Bien merci beaucoup, j'arais peut etre besoin de vous plus tard, car j'ai des classes qui utilise d'autres classes qui en utilisent d'autres...
    Mais on verra, je vais peut etre y arriver tout seul.

    Pour reprendre pour les autres, voici le programme à mettre:

    Dans "Fonctions"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Fonctions
        {
            public void communication()
            {
     
            }
     
            public void a(ref int b)
            {
                b = 10;
            }
        }
    Dans "Form1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     public partial class Form1 : Form
      {
            Fonctions visco = new Fonctions();
            int c=0;
     
            public Form1()
            {
                InitializeComponent();
            }
            public void button1_Click(object sender, EventArgs e)
            {
               visco.a(ref c);
               label5.Text = Convert.ToString(c);
             }
      }

    Surtout, si il y a des trucks en trop,inutiles, je veux bien l'info.

    apres que mon calcul soit
    b=10;
    ou
    return b*b;

    c'est pareil non?


    Merci chadoum.


    D'accord ericlm128 je vais éviter "ref" et trouver un tutos d'object (j'avais commencé par du c# mais l'object est peut etre la base de la base).

    Merci à tous, merci J@ckHerror.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/05/2008, 22h19
  2. Réponses: 3
    Dernier message: 25/12/2006, 20h45
  3. Réponses: 6
    Dernier message: 12/11/2006, 16h46
  4. debutant : classe utilisant une autre classe
    Par zoubla dans le forum Débuter
    Réponses: 6
    Dernier message: 20/10/2006, 15h40
  5. Réponses: 2
    Dernier message: 02/05/2006, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo