gzitoun
Messages postés61Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention10 décembre 2009
-
18 juil. 2007 à 09:11
gzitoun
Messages postés61Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention10 décembre 2009
-
19 juil. 2007 à 15:05
Salut,
voila je suis en train de faire une sorte de QCM avec plusieurs ecrans:
je voudrais avoir des bouton suivant/precedent.
Pour le suivant, pas de probleme:
private void suivant_Click(object sender, EventArgs e)
{
Ecran4 fe4 = new Ecran4();
fe4.ShowDialog();
}
Mais pour le precedent en faisant de meme, je perds forcement les donnees entrees precedemment:
private void precedent_Click(object sender, EventArgs e)
{
Ecran2 fe2 = new Ecran2();
fe2.ShowDialog();
}
Y-a-t-il un truc facile pour revenir a l ecran precedent tout en conservant les donnees entrees?
PS: peut etre plus complique: je suis a l ecran3. Je reviens 2 ecrans en arriere(ecran1) pour modifier quelque chose. Je modifie. Je veux me retrouver ou j etais (ecran3) en effectuant suivant 2 fois.
Comment faire pour ne pas reremplir l ecran2?
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 18 juil. 2007 à 11:07
Salut, Voila un tit bout de code pour appuyer Bidou (c'est pas optimisé mais c'est assez simple)
Tu créer une form qui va servir de template à tes écrans, elle ne contient que les boutons précédents et suivant (et tout ce que tu trouvera sur chacun de tes écrans). Voici le code de cette fenetre template
public partial class frmEcran : Form
{
private frmEcran m_Prev;
private frmEcran m_Next;
public abstract void suivant_Click(object sender, EventArgs e);
public abstract void precedent_Click(object sender, EventArgs e);
}
Ensuite, pour chaque formulaire qui te sert d'ecran, tu change l'héritage :
public partial class frmEcran1 : frmEcran
Comme ca, chaque écran possède tes deux variables privées, le constructeur qui prend un autre écran en paramètre et tes bouttons suivant/précédents.
Comme les méthodes de click de ces bouttons sont en abstract, tu devra les écrire pour chaque écran.
C'est pas dur, c'est tout le temps la meme chose a peu de chose pres :
public void suivant_Click(object sender, EventArgs e)
{
Visible = false; //Masque la fenêtre en cours
if(m_Next == null) //L'écran suivant n'a pas encore ete crée
m_Next = new frmEcran(this); //A remplacer par Ecran1(this), Ecran2(this), .... selon l'écran qui doit être crée
else
m_Next.Visible = true;
}
public void precedent_Click(object sender, EventArgs e)
{
Visible = false; //Masque la fenêtre en cours
if(m_Prev == null) //L'écran précédent n'a pas encore ete crée, ne devrait jamais etre vrai, mais au cas ou ...
m_Prev = new frmEcran(this); //A remplacer par Ecran1(this), Ecran2(this), .... selon l'écran qui doit être crée
else
m_Prev.Visible = true;
}
Sur ton dernier formulaire, il faudrait que ton boutton suivant change de nom.
Utilise la propriétée suivant.Text pour ca. A mettre dans le constructeur de ce dernier formulaire.
Ce dernier formulaire à un comportement spécial sur sont boutton suivant. Puisqu'il valide les données. Utilise m_Prev pour retrouver tes écrans précédents et leurs données.
Quand les données d'un formulaire sont validée, fait un Close() dessus et efface ses références aupres des autres formulaires pour le décharger complètement.
exemple, tu as enregistrer complètement les valeurs de l'ecran2, tu peux détruire cet écran. Tu te place dessus puis :
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 18 juil. 2007 à 09:17
Salut,
Ce que tu dois faire, c'est pas reconstruire ton formulaire à chaque fois avec un new, mais garder une référence au fur et à mesure que l'utilisateur clique sur suivant pour pouvoir par la suite revenir en arrière...
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 18 juil. 2007 à 10:44
Pour poursuivre sur ce que dit Bidou, tu peux par exemple "cacher" tes formulaires précédent au lieu de les fermer, ainsi tu peux les ré-afficher (avec leure données) si nécessaire.
Par contre, pour avoir déjà eu à faire à cette problématique, attention à la navigation précédent/suivant : Dans certains cas, les données affichée sur le formulaire n+1 dépendent des choix fait dans le formulaire n (ou même encore avant). Si c'est ton cas, alors il va falloir gérer cela (l'utilisateur saisie des données dans le formulaire n+1, fait précédent, modifie sa saisie dans le formulaire n, puis reviens sur le n+1...). Et ça devient vite un sac de noeuds...
gzitoun
Messages postés61Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention10 décembre 2009 19 juil. 2007 à 15:05
Salut,
j ai un souci avec:
public abstract void suivant_Click(object sender, EventArgs e);
public abstract void precedent_Click(object sender, EventArgs e);
Voici l erreur:
Erreur 2 'ABIOS.frmEcran.suivant_Click(object, System.EventArgs)' est abstrait, mais est contenu dans la classe non abstraite 'ABIOS.frmEcran'