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 :

[C#][UserControl]Communication WinForm <> UserControl


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut [C#][UserControl]Communication WinForm <> UserControl
    Bonjour,

    Mon application est constituée d'une form principale qui dispose d'un minimum de contrôles dont un champ texte et un panel dans lequel je charge des contrôles utilisateurs. Depuis un UC, lors d'un évenement OnClick sur un bouton je souhaite valider des données saisies dans le formulaire contenu dans l'UC. Jusque là rien d'exotique... Mais j'aimerais pouvoir afficher un message (en cas d'erreur de la validation notemment) dans le champ texte de la form principale. But How ???? Sachant que je créé mon Uc juste au moment où je souhaite le charger.
    Je comprends bien que dans le code de mon Uc, la form principale est inconnue, ainsi que le champ texte.
    Donc comment réaliser une telle action svp (qui me semble triviale pourtant ....) ?

    Merci d'avance
    B.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    deux solutions que je vois possible :

    1/ L'UC connait le main Form.. donc, dans ton UC, tu as une référence au main qui lui est passé lors de sa construction

    2/ Le traitement de validation n'est pas fait dans l'UC mais dans un bout de code
    du main, et c'est le main qui valide et affiche la popup d'avertissement

    The Monz, Toulouse

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    deux solutions que je vois possible :

    1/ L'UC connait le main Form.. donc, dans ton UC, tu as une référence au main qui lui est passé lors de sa construction

    2/ Le traitement de validation n'est pas fait dans l'UC mais dans un bout de code
    du main, et c'est le main qui valide et affiche la popup d'avertissement

    The Monz, Toulouse
    Ok, merci pour la rapidité d'intervention :-)

    La solution 1/ est-elle "propre" ? Quand tu parles de référence au main dans le constructeur de l'UC tu parles d'un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private Form _parent;
            public ucMonUc(Form parent)
            {
                this._parent = parent;
            }
    comme ça je peux travailler sur main depuis l'UC ?
    Me trompe-je ?

    cya
    B.

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    non non, tu ne te trompes pas

    Cela te permet de connaitre dans ton UC ton Main

    Maintenant, si ton UC est "un plug-in", il n'est pas "propre" que l'UC connaisse le type de l'objet qu'on lui passe...

    Je veux dire que passer Parent (comme tu l'indiques) est tout à fait faisable, par contre, pour pouvoir appeler une méthode différente des méthodes de base d'une form, il va falloir que dans ton UC, tu saches qu'il s'agit pas d'une form, mais d'une MyForm ou d'une form1 ou autre nom de la classe de ta form

    Une approche plus "propre" est de créer une interface dans laquelle on va trouver les méthodes de validation que l'UC va devoir appeler, et que t'as
    form (quelque soit son nom), implémente cette interface.. Ainsi, dans l'UC, tu n'auras qu'à caster ta form en IMonInterface et basta... (l'avantage en faisant ainsi que ton UC peut etre générer, compiler , sans soucis à partir du moment ou il connait l'interface IMonInterface

    Tu saisies la démarche ?

    The Monz, Toulouse

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut
    yep, c'est un peu plus touffu mais loin d'être intéressant.
    Bon, je ne te cache pas que pour le moment je vais passer par la référence dans le constructeur, mais j'avais déjà jeté un oeil distrait sur les interfaces et je devrais pouvoir y consacrer un peu de temps !

    Thks !!
    B.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut
    Bon, en fait c'est pas si résolu que ça.....
    Ok, je passe ma form dans mon constructeur de l'Uc mais je n'ai toujours pas accès (depuis l'Uc) à mon champ texte (EditBox) placée dans le forme principale .... J'ai essayé de mettre ce champ en visibilité public dans le designer.cs de ma form mais ça ne passe pas....

    Any idea ?
    B.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    deux solutions que je vois possible :

    1/ L'UC connait le main Form.. donc, dans ton UC, tu as une référence au main qui lui est passé lors de sa construction
    Même pas indispensable d'avoir une référence. Depuis l'UC, this.FindForm() va retourner la référence à la Form contenante.

Discussions similaires

  1. [Débutant] WinForm avec 2 UserControl Custom et gestion des évènements
    Par Cyryior dans le forum C#
    Réponses: 0
    Dernier message: 01/08/2011, 01h09
  2. Communication entre UserControl et winform
    Par topolino dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/06/2009, 16h03
  3. Réponses: 6
    Dernier message: 12/02/2008, 14h56
  4. Communication Winform 2.0
    Par xtiand4 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 12/11/2007, 16h51
  5. [Grid][UserControl] Mise en forme de UserControl dans une Grid
    Par youngBugger dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/10/2007, 10h37

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