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

 .NET Discussion :

Structurer son code, passer des composants à des classes


Sujet :

.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Points : 20
    Points
    20
    Par défaut Structurer son code, passer des composants à des classes
    Bonjour

    Je viens du monde Delphi ou l on peut simplement passer des composants (ou objets en général etc) d'un form à une unité (que du code) qui interagit avec les composants de la form.

    Pour exemple la mise à jour d un graphique (Chart1) sur Form1.
    Dans une unité chargée du traitement des données, on déclare dans les "uses" le form1 et ensuite quand on veut accéder aux propriétés ou méthodes, il suffit de faire form1.chart1.XXXXX

    J aimerai faire de même avec C# car je débute et suis totalement débordé par ce code que je n arrive pas à structurer.

    J'ai crée une class MyChart et aimerai à l intérieur, pouvoir interagir avec le chart1 du form1

    Est-ce possible et si oui comment procéder ? Sinon, d une manière générale, auriez vous un exemple ou un lien vers un exemple "générique" parce que je suis un peu perdu ...

    De plus, tous vos conseils sur la structuration de mon code sont les bienvenus car étrangement (et malheureusement pour moi), je n ai trouvé aucun tuto sur cela.

    Merci pour votre aide et vos conseils.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 153
    Points : 25 071
    Points
    25 071
    Par défaut
    en c# tu ne peux pas faire form1.control... pour la simple et bonne raison qu'à un instant T il peut y avoir plusieurs form1 ouvertes
    ce n'est peut etre pas ton cas mais certains peuvent tout à fait faire un FrmClient et que l'utilisateur puisse ouvrir plusieurs clients en même temps
    donc c# ne pourrait pas savoir sur quel form tu veux agir

    par contre il est tout à fait possible de passer un control en paramètre
    pour ca tu peux faire une classe qui s'occupera de ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static class GestionChart
    {
      public static void ModifieChart(Chart lechart)
      {
        lechart.machin = ...;
      }
    }
    dans le form1 tu peux alors faire GestionChart.ModifieChart(this.Chart1)
    la classe est marquée static, cela signifie que tous ses membres sont accessibles sans instances


    sinon il est aussi possible de faire des usercontrols pour étendre le fonctionnement d'un control (ou en faire fonctionner plusieurs ensemble et donc les poser tous d'un coup)
    il est aussi possible d'hériter d'une classe existante pour étendre la aussi son fonctionnement
    ca structure un peu plus le code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Points : 20
    Points
    20
    Par défaut
    Merci, c est parfaitement clair, j ai tout compris.
    Et finalement je trouve cela au moins aussi simple qu'en delphi.
    Mon code va enfin être lisible

  4. #4
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Points : 20
    Points
    20
    Par défaut
    J ai enfin pu tester et j ai un petit pb...
    Ma form 1
    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
    18
    19
    20
    21
    22
    23
    24
    25
    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;
     
    namespace MtxLab
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                MaClasseButton.ChangeText(this.button1);
            }
        }
    }
    Ma classe (créée avec Ajouter une classe):
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace MtxLab
    {
        public static class MaClasseButton
        {
            public static void ChangeText(Button bt)
            {
                bt.Text = "changed";
            }
        }
    }
    quand je lance le debug j ai une erreur "Des erreurs de build se sont produites..."
    Je vois bien dans ma classe que j ai 1 référence et dans la méthode aussi 1 référence qui pointent toutes deux au bon endroit.
    Je n ai aucun pb de syntaxe.
    Qu ai je raté d autant que quand ma classe est dans le Form1, elle est totalement fonctionnelle.

    Aussi quand, en général, une erreur apparait, le programme s arrête sur la ligne incriminée et un message d erreur apparait. Et ici rien...
    C est d autant plus frustrant que je débute et avais compris le principe, testé dans mon projet avec le chart et cela fonctionnait mais là je repars sur un nouveau projet et...

    Merci

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 153
    Points : 25 071
    Points
    25 071
    Par défaut
    il y a les erreurs de compilation, tu as écrit nimp et vs ne peut pas compiler tant que tu n'as pas corriger la ou les lignes qui posent problème
    et les erreurs d'exécution (exceptions) qui sont des bugs à l'exécution et qui peuvent être interceptées avec un try catch

    dans visual studio tu peux faire menu affichage / liste d'erreurs
    ca ouvre une petite fenêtre à ancrer en bas avec en presque temps réel les erreurs d'écriture de code qui empêchent la compilation, et qu'on peut forcer à se rafraichir en demandant la compilation
    idéalement on travaille avec cette fenêtre ouverte tout le temps
    quand on double clique sur une ligne dans cette fenêtre ca emmène au code concerné (qui est d'ailleurs souligné en rouge dans le code)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Points : 20
    Points
    20
    Par défaut
    MERCI !

    La prise en main de visual studio est pas si évidente quand tu viens de delphi ou par défaut cette fenêtre s affiche à chaque compilation...

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

Discussions similaires

  1. Modifier ou obtenir le code source des classes Qt
    Par Python13 dans le forum Débuter
    Réponses: 4
    Dernier message: 26/02/2014, 10h24
  2. Réponses: 0
    Dernier message: 30/12/2010, 22h28
  3. Comment structurer son code ?
    Par Djey6 dans le forum wxPython
    Réponses: 1
    Dernier message: 09/12/2010, 16h24
  4. organiser son code dans des pages ASP.NET
    Par Paul Van Walleghem dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2008, 15h21
  5. [VBA][Excel] Comment bien structurer son code?
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2007, 19h39

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