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 :

[C# et Form] Utiliser les "control.value" d'un form dans une autre classe


Sujet :

C#

  1. #1
    Membre du Club Avatar de popoliline
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut [C# et Form] Utiliser les "control.value" d'un form dans une autre classe
    Bonjour à tous,

    Le titre est pas super explicite mais voilà je rencontre des difficultés pour récupérer dans une classe des valeurs de controls contenu dans un windows Form.

    Je m'explique par un exemple :
    J'ai un Windows Form Form.cs qui contient une PictureBox dans laquelle je souhaite afficher des images.
    Donc pour le moment, j'ai mis l'ensemble de mon code dans Form.cs avec notamment ces méthodes :

    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
    26
    27
    28
    29
    30
    31
     
        private void BtnViewer_Click ( object sender, EventArgs e )
        {
          GetBitmap ();
        }
     
        private void GetBitmap ()
        {
          string PathFolder = @"E:\Temp";
          if ( Directory.GetFiles ( PathFolder ).Length > 1 )
          {
            string[] RawImg = null;
            RawImg = Directory.GetFiles ( PathFolder, "*.png" );
            FolderFile = new string[RawImg.Length];
            Array.Copy ( RawImg, 0, FolderFile, 0, RawImg.Length );
     
            int Selected = 0;
            int Begin = 0;
            int End = FolderFile.Length;
     
            ShowImage ( FolderFile[Selected] );
          }
        }
     
    private void ShowImage ( string Path )
        {
          Image ImgTemp = Image.FromFile ( Path );
          this.PictureBoxWorkArea.Width = ImgTemp.Width;
          this.PictureBoxWorkArea.Height = ImgTemp.Height;
          this.PictureBoxWorkArea.Image = ImgTemp;
        }
    J'ai également utilisé des méthodes pour visualiser les images suivantes ou précédentes.
    Jusque là tout fonctionne très bien.

    Maintenant, pour alléger le Form.cs j'aimerai créer une nouvelle classe, Pictures.cs, pour y ajouter les méthodes GetBitmap et ShowImage pour ensuite y faire appel dans le Form.cs avec quelquechose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        private void BtnViewer_Click ( object sender, EventArgs e )
        {
          Pictures.GetBitmap ();
        }
    Mon problème c'est que je n'arrive pas à récupérer dans Pictures.cs les PictureBoxWorkArea.Width et autres qui sont issus du Form.cs et que j'utilise dans la méthode ShowImage().

    En espérant que mon explication ne soit pas trop foireuse, pourriez-vous me donner quelques pistes car là je ne vois pas du tout comment faire
    J'ai regardé du côté des constructeurs et même du côté des threads mais je suis bien larguée et je ne voudrais pas partir dans une impasse

    Merci d'avance pour votre aide
    (J'utilise VS 2005)

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 190
    Points
    28 190
    Par défaut
    C'est quoi cette propriété "PictureBoxWorkArea", elle semble inconnue de l'aide MSDN


    Le mieux et le plus propre est que tu passe ton contrôle PictureBox en paramètres aux méthodes de ta classe.

  3. #3
    Membre du Club Avatar de popoliline
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    oui, pardon du manque de précision
    PictureBoxWorkArea est le nom de la PictureBox que j'ai inséré dans mon Form.

    Donc par rapport à ce que tu proposes, là ou je coince c'est effectivement la façon dont il faut faire pour passer ce contrôle en paramètre pour ensuite récupérer ces propriétés (Width, Height et Image).
    Serait-il possible d'avoir un exemple par rapport à mon cas de figure ?

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 190
    Points
    28 190
    Par défaut
    Dans ta 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
    17
    18
    19
    20
    21
    22
    23
    24
     
    private void GetBitmap (PictureBox pb)     
    {       
        string PathFolder = @"E:\Temp";       
        if ( Directory.GetFiles ( PathFolder ).Length > 1 )       
       {         
            string[] RawImg = null;         
            RawImg = Directory.GetFiles ( PathFolder, "*.png" );         
            FolderFile = new string[RawImg.Length];         
            Array.Copy ( RawImg, 0, FolderFile, 0, RawImg.Length );           
            int Selected = 0;         
            int Begin = 0;         
            int End = FolderFile.Length;           
            ShowImage ( FolderFile[Selected] , pb);       
        }     
    }   
     
    private void ShowImage ( string Path ,PictureBox pb)     
    {       
        Image ImgTemp = Image.FromFile ( Path );       
        pb.Width = ImgTemp.Width;       
        pb.Height = ImgTemp.Height; 
        pb.Image = ImgTemp;     
    }
    Dans ta form, à l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void BtnViewer_Click ( object sender, EventArgs e )     
    {       
        Pictures.GetBitmap (PictureBoxWorkArea);
    }
    Ainsi ta classe n'est liée pas avec ta form, elle agit sur un contrôle que tu lui passe en paramètre. Ce contrôle est sur ta form, mais il pourrait très bien être sur une autre form.

  5. #5
    Membre du Club Avatar de popoliline
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Yes, un très très grand merci à toi, tout fonctionne super bien
    Effectivement ce n'était pas très sorcier mais j'avais du mal à visualiser l'enchaînement !!

    Merci et bonne fin de soirée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/04/2011, 10h32
  2. Utilisation des méthodes de classe dans une autre classe
    Par ChriGoLioNaDor dans le forum C++
    Réponses: 4
    Dernier message: 28/07/2007, 15h10
  3. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13
  4. Réponses: 3
    Dernier message: 25/12/2006, 20h45
  5. Réponses: 6
    Dernier message: 12/11/2006, 16h46

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