UserControls imbriqués. [Résolu]

PeTeRsLaStAr 158 Messages postés samedi 22 juin 2002Date d'inscription 27 juin 2015 Dernière intervention - 29 nov. 2005 à 14:43 - Dernière réponse : PeTeRsLaStAr 158 Messages postés samedi 22 juin 2002Date d'inscription 27 juin 2015 Dernière intervention
- 29 nov. 2005 à 16:11
Bonjour, c'est encore moi :)

Alors voilà mon pb aujourd'hui.

Voilà dans mon application, j'ai plusieurs USERs control dans une form, qui sont en premier plan ou en arrière plan (Show ou Hide) en fonction d'un outil MainMenu (peut être que je n'utilise pas la meilleure manière, si vous en avez d'autres, je susi preneur). Je précise, c'est une application en WIN.

Dans l'un de mes UserControl (on va l'appeler heu... usrEleve), j'ai un tableau qui résume ts les élèves ou il y a des informations les concernant, et trois boutons, ajout/modif/suppression.

Mon bouton ajout m'ouvre un autre UserControl... Qui est stocké 'par dessus' mon UserControl usrEleve, mais en visible=false.
Pour passer de l'un à l'autre, je mets userAjoutEleve1.visible=true; puis
userAjoutEleve1.bringToFront(); sur l'évenement onClick de mon bouton Ajout.

Pour l'instant ça ça marche. (uen fois de plus si j'utilise une mauvaise technique, genre si un Load (mais je ne vois pas trop comment ça marche) ou autre est plus simple, n'hésitez pas à me le dire hein).

Ma question, est la suivante.
Voilà je suis dans mon usrAjoutEleve, et j'ai un bouton qui me permet de revenir à moné cran principal. (en gros qui fait un Visible=false;)

Comment mettre à jour ma list concernant mes eleves lstEleves (en supposant que j'ai rajouté un élève par exemple) ? Il faudrait que je mette à jour mon dataset (cmdDataEleve.fill(DsEleves)) mais je ne vois pas OU placer cet événement ?

Alors j'ai bien pensé à créer un truc du genre
usrEleve MyUsr;
MyUsr=parent;
MyUsr.cmdDataEleve.Fill(MyUsr.DsEleves);

Le souci c'est que parent ne doit pas être la bonne instanciation pour le composant MyUsr... (qui est bien paramétré en public hein...)

J'ai recherché quelques informations sur ce Forum sans trouver de solutions apparentes.
Donc si quelqu'un a la réponse... ou une suggestion...
(si vous souhaitez plus de détails, n'hésitez pas à m'en demander hein... )

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Afficher la suite 

8 réponses

Répondre au sujet
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 29 nov. 2005 à 15:45
+3
Utile
nan... s'abonner c'est plus l'équivalent du Handles de VB...

en C#, on fait comme ceci :

maClasse.MonEvent += new EventHandler(maClasse_MonEvent);

[...]
protected void maClasse_MonEvent(object sender, EventArgs e) {
[...]
}

Sébastien FERRAND
[MVP C#]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 29 nov. 2005 à 14:50
0
Utile
je vois une solution plus simple... tu t'abonnes à l'évènement VisibleChanged de ton UserControl, et lorsque celui-ci passe à false... et bah tu recharge le dataset... simple et efficace ;)

Sébastien FERRAND
[MVP C#]
Commenter la réponse de sebmafate
PeTeRsLaStAr 158 Messages postés samedi 22 juin 2002Date d'inscription 27 juin 2015 Dernière intervention - 29 nov. 2005 à 14:58
0
Utile
Le souci, c'est que mon UsrControl UsrEleve ne bouge pas, et reste tjrs à visible...

Il perd juste le focus, vu que UsrAjoutEleve passe à BringToFront, mais en soit il est tjrs Visible... et du coup il ne passe pas dans l'évenement VisibleChanged...

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Commenter la réponse de PeTeRsLaStAr
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 29 nov. 2005 à 15:00
0
Utile
tu as un bouton pour valider la saisie de ton élève ?

Sébastien FERRAND
[MVP C#]
Commenter la réponse de sebmafate
PeTeRsLaStAr 158 Messages postés samedi 22 juin 2002Date d'inscription 27 juin 2015 Dernière intervention - 29 nov. 2005 à 15:05
0
Utile
Oui.

En fait la question c'est comment accéder à mon UsrControl UsrEleve à partir de UsrAjoutEleve.

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Commenter la réponse de PeTeRsLaStAr
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 29 nov. 2005 à 15:38
0
Utile
nan... je crois que tu prends le problème à l'envers.
pense à une pile d'assiettes. l'assiette du dessus ne voit jamais celle du dessous...

donc, c'est UsrEleve qui voit UsrAjoutEleve... quand UsrEleve détecte que UsrAjoutEleve, il doit se mettre à jour tout seul. C'est pour cela qu'il existe des évènements.

genre dans UsrAjoutEleve, tu crées un évènements Added qui sera appelé à la fin de la création d'un élève.
Dans UsrEleve tu t'abonnes à cet évènement, et quand tu l'interceptes, tu le mets à jour.

Sébastien FERRAND
[MVP C#]
Commenter la réponse de sebmafate
PeTeRsLaStAr 158 Messages postés samedi 22 juin 2002Date d'inscription 27 juin 2015 Dernière intervention - 29 nov. 2005 à 15:41
0
Utile
Ok...
Par contre j'ai un petit pb avec le vocabulaire de CSharp...

Qu'entendus par 'tu t'abonnes' ?
Est ce l'équivalent de 'raiseEvent' en VB ?

Pourrais tu me donner la syntaxe approximative ?

(encore merci pour ton aide..)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Commenter la réponse de PeTeRsLaStAr
PeTeRsLaStAr 158 Messages postés samedi 22 juin 2002Date d'inscription 27 juin 2015 Dernière intervention - 29 nov. 2005 à 16:11
0
Utile
Merci cela fonctionne bien. Mm si j'ai mis un peu de temps à tout remettre dans le bon ordre pour bien comprendre :)))

Voilà le code un peu plus précis (si quelqu'un tombe par hasard par là...)

J'ai commencé par rendre public mon bouton btnAjouter dans UsrAjoutEleve.

Puis j'ai créé une fonctino (RefreshList) de type Void dans mon userEleve, qui contenant le code nécessaire pour mettre à jour ma liste. (en gros ocmdEleves.Fill(dsEleves);) avec les arguments (object sender, EventArgs e)

Puis j'ai rajouté dans InitializeComponents la ligne suivante :

this.usrEleveQCM.btnAjouter.Click+=new EventHandler(this.RefreshList);

Et maintenant ça marche...
Encore merci pour ton aide Sebmafate :)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Commenter la réponse de PeTeRsLaStAr

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.