Obtenir pointeur sur une form en cours

ketaaa Messages postés 5 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 24 mars 2010 - 23 mars 2010 à 17:16
ketaaa Messages postés 5 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 24 mars 2010 - 24 mars 2010 à 07:07
Bonjour ,
je développe sous le compact framework (avec windows mobile 6 SDK ) et un problème persiste.

J'ai recrée une classe CBarrePerso héritant de la class Control.
Cette classe crée un une barre de couloir en haut de l'écran avec deux boutons (un a gauche , et un a droite).

Par exemple un bouton Retour et un Suivant.

Mon constructeur se présente sous la forme :
public CBar(Form p_BackForm, Form p_NextForm, string p_NomRightButton, string p_NomLeftButton);


j'ai associé au deux boutons des eventhandler sur des méthodes click que j'ai crée.
Le seul problème est quand je clique sur le bouton Retour par exemple . La forme BackForm s'affiche , mais son ancienne reste toujours ouverte .
Je veux donc pouvoir récuperer un pointeur sur la form courante pour la fermer avant d'ouvrir l'autre pour éviter que des forms inutiles restent ouvert sur le mobile.

Je ne sais pas comment faire pour obtenir ce pointeur là.


Merci de votre aide

Cordialement Ketaaa

4 réponses

yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
23 mars 2010 à 18:23
sur ta form principale stock tes autre form ouvert dans une list:

public List<Form> ColForms = new List<Form>();


public Object GetForm(String classname)
{
    IEnumerator iter = ColForms.GetEnumerator();
    while (iter.MoveNext())
    {
        if (iter.Current.GetType() == Type.GetType(classname))
        {
             return iter.Current;
        }
    }

    return null;
}



la ou tu a besoin :
Object o = GetForm("Application1.Form2")
if(o != null)
{
    Form2 f = o as Form2;
    ....
}



il faut juste veiller a bien retirer la form de ColForm l'ors dans le FormClossing de la form2 ouverte
0
ketaaa Messages postés 5 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 24 mars 2010
23 mars 2010 à 18:58
C'est pas ce que je veux , je crois que je me suis mal expliqué , la dans ce que tu m'a donné il faut que je mette le nom de ma classe de ma form dans le code de la bar . Mais la barre est utilisé sur plusieurs form et les liens sont dynamiques ( ce ne sont jamais les mêmes ) .

Même en passant par les API windows style FindWindow ou quelque chose on peux pas récupérer un pointeur sur la form courante?

Merci d'avoir prêter attention à ma requête
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
23 mars 2010 à 21:17
ha ben si tu a :

public CBar(Form p_BackForm, Form p_NextForm, string p_NomRightButton, string p_NomLeftButton);

admeton que tu soit dans la Form3 et p_BackForm soit tu type Form2

private bt_Click( Object sender , EventArgs e)
{
     p_BackForm.Show();
     Button bt = sender as Button;
     (Form)f = bt.FindForm();
     f.Close();

}
0
ketaaa Messages postés 5 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 07:07
k merci je vais essayer :D
0