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

C# Discussion :

Instancier un formulaire - Méthode static


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut Instancier un formulaire - Méthode static
    Bonjour !

    Je voudrais me faire une petite librairie toute simple pour tracer des graphiques à partir de deux tableaux de données. Pour ce faire, ma classe comporte donc une méthode static pour que je n'ai pas besoin d'instancier ma classe afin d'utiliser la méthode.
    Dans un premier temps, ma class doit instancier un formulaire. Je le fais de façon static pour pouvoir utiliser les controles du formulaire avec ma méthode static. Seulement, le compilateur me dit que j'ai pas le droit de faire ça à cause du niveau de protection de mon formulaire !

    Voici mon petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class cGraph
        {
            static FormGraph fGraph = new FormGraph();
     
            static void plot(Array x, Array y)
            {            
                fGraph.chart1.Series.clear;
                fGraph.chart1.Series.Add("serie");
                fGraph.chart1.Series["serie"].ChartType = SeriesChartType.Line;
                fGraph.chart1.Series["serie"].Points.DataBindXY(x, y);
                fGraph.show();
            }
        }
    Dans mon formulaire de type FormGraph, il n'y a qu'un controle MSChart et rien d'autre. Le compilateur me dit que Form2.chart1 n'est pas accessible en raison de son niveau de protection....

    Merci pour votre aide !

  2. #2
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Ok bon ben j'ai finalement trouvé la solution à mon problème...
    Ça n'a aucun rapport avec le caractère static de ma méthode, mais c'est juste que le controle CHART1 de mon autre formulaire est déclaré private, et donc je ne pouvais pas y accéder à partir de ma méthode. En le déclarant public il n'y a plus de souci.

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par androz Voir le message
    En le déclarant public il n'y a plus de souci.
    D'un point de vue objet, il serait préférable de faire de cette méthode un membre de la form, afin de maintenir un minimum d'encapsulation. Cela éviterait de rendre le membre chart1 public.

  4. #4
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    En effet, ça serait mieux pour l'encapsulation, mais comment faire pour avoir accès au composant chart1 depuis ma méthode static ? La form n'est jamais instanciée donc la référence au chart n'existe pas.

    Je bloque

  5. #5
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Je ne comprends pas pourquoi tu as besoin de mettre static sur ta méthode et ton attribut formulaire et pourquoi tu as besoin de ne pas instancier cette classe

    Auquel cas je pense que Guulh pensait à quelque chose comme cela

    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
     
    public class cGraph
        {
            static FormGraph fGraph = new FormGraph();
     
            static void plot(Array x, Array y)
            {            
                fGraph.plot(x,y);      
                fGraph.show();
            }
        }
     
    class FormGraph
    {
           public void plot(Array x, Array y)
           {
                chart1.Series.clear;
                chart1.Series.Add("serie");
                chart1.Series["serie"].ChartType = SeriesChartType.Line;
                chart1.Series["serie"].Points.DataBindXY(x, y);
          }
    }
    J'ai tout de même du mal à comprendre à quoi sert la première classe

  6. #6
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    J'ai besoin (enfin je pense) de mettre ma méthode static et de ne pas l'instancier pour pouvoir l'utiliser n'importe quand, tout comme les méthodes de la classe Math par exemple. Cette méthode fait partie d'une DLL (ma première à vie). En gros, imaginons pour l'exemple que je code un petit programme qui mesure un courant électrique en fonction du temps, et que je veuille tracer ce courant sur un graphique. Alors. je n'aurai plus qu'à faire appel à cette méthode "plot" sans avoir besoin d'instancier quelque classe que ce soit.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/04/2007, 17h08
  2. [Java] méthode static et passage de paramètre
    Par tomburn dans le forum Langage
    Réponses: 10
    Dernier message: 11/05/2005, 16h19
  3. [FLASH MX2004] [AS2] Classe méthodes static
    Par bolo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 16/12/2004, 18h26
  4. [debutant] Méthode static
    Par iago dans le forum Langage
    Réponses: 12
    Dernier message: 25/11/2004, 17h09
  5. thread et méthodes static
    Par sylpichard dans le forum MFC
    Réponses: 3
    Dernier message: 02/06/2004, 17h12

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