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 :

Form contenant un usercontrol [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut Form contenant un usercontrol
    Bonjour a la comunauté,

    J'écris une petite appli dans la quelle j'ai un UserControl sur une Form.
    A partir du UserControl, je souhaiterais mettre a jour un label qui lui se trouve sur la Form
    J'ai definis une propriété d'un objet, la valeur se met bien a jour ( avec un messageBox, mais le label lui ne se met pas a jour )
    Je rate surement quelques chose , et surement par manque de connaissance. Quelqu'un peut-il m'aider ou m'orienter.

    Code coté Form
    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
      private double TotalLogistiquePourcentage;
     
     
                public double _TotalIngredientPourcentage
                {
                      get
                      {
                            return TotalIngredientQuantite;
                      }
                      set
                      {
                            LblPourcentageIngredients.Text=value.ToString(),
                            MessageBox.Show(  value.ToString());
                      }
                }
    Code coté UC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     FrmFichesTechnique MyPourcentIngredient = new FrmFichesTechnique();
     
     
     
                            //total quantite
                            for (int i = 0; i < DgGridIngredients.Rows.Count; i++)
                            {
                                  TotalQuantite += Convert.ToDouble(DgGridIngredients.Rows[i].Cells["Quantite"].Value);
                            }
                            MyPourcentIngredient._TotalIngredientPourcentage = TotalQuantite;

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    oui, un gros truc

    tu fais un new frmmachin, donc ce n'est pas la même instance de frmmachin que celle qui est sous le UC


    le truc que les débutants ne voient pas c'est qu'il est tout à fait possible de coder une form mais d'en afficher plusieurs instances (avec des données différentes, comme une frmclient qui afficherait un client et d'ouvrir plusieurs clients)
    il est donc question de référence vers une instance, ce qui est un point essentiel de la POO

    il faudrait donc dans l'absolu avoir la référence vers le form qui est sous le UC
    la version simple c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((FrmFichesTechnique)this.FindForm()).propriété = valeur
    c'est pas génial car ca oblige à ce que cet UC soit toujours sur cette form, pas ailleurs
    ce qui est déjà le cas vu que tu veux modifier un label, mais du coup faire un usercontrol ne sert pas forcément à grand chose, un usercontrol c'est fait pour être utilisé plusieurs fois

    le mieux serait de créer un évènement sur l'UC, il lèverait cet event en fournissant les données, et le form s'abonnerait à cet event pour mettre à jour le label que lui connait
    c'est un peu la base de Windows forms, un control lève des évènements en spécifiant ce qui a changé et le form s'adapte
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Merci pol63

    Effectivement, si je comprend bien : si je crée une nouvelle instance de ma form a partir de l'UC , je ne peux donc accéder a la propriété de celle qui contient l' UC

    j'espère être claire

    Je regardes pour la suite

    Pour info j'ai créer ce UC par facilité de lecture de code. Peut être pas la bonne pratique .....

  4. #4
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Et pour clôturer ta méthode fonctionne
    encore Merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par thierry007 Voir le message
    Effectivement, si je comprend bien : si je crée une nouvelle instance de ma form a partir de l'UC , je ne peux donc accéder a la propriété de celle qui contient l' UC

    form que tu n'affiches pas (car il n'y a pas de .show), mais tu accèdes quand même à la propriété de l'UC, c'est juste que c'est pas du bon UC ^^
    car comme l'autre form affichée qui est identique car même classe, celle que tu créés à ce moment là a ton UC dessus aussi


    Citation Envoyé par thierry007 Voir le message
    Pour info j'ai créer ce UC par facilité de lecture de code. Peut être pas la bonne pratique .....
    pourquoi pas ca reste une encapsulation comme une autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [Débutant] Reference à la forme contenant mon usercontrol
    Par dfaessel dans le forum C#
    Réponses: 2
    Dernier message: 07/10/2015, 14h47
  2. Réponses: 5
    Dernier message: 28/09/2010, 16h57
  3. communication entre un Form et un UserControl
    Par tmerigon dans le forum C#
    Réponses: 7
    Dernier message: 02/04/2010, 09h28
  4. Réponses: 1
    Dernier message: 07/12/2009, 00h29
  5. Recuperer le panel contenant le usercontrol
    Par chris81 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/06/2008, 13h43

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