Obtenir pointeur sur une form en cours

Signaler
Messages postés
5
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
24 mars 2010
-
Messages postés
5
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
24 mars 2010
-
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

Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
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
Messages postés
5
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
24 mars 2010

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
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
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();

}
Messages postés
5
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
24 mars 2010

k merci je vais essayer :D