Fermer un Form et pouvoir le relancer plus tard [Résolu]

Signaler
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010
-
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
-
Bonjour à tous,

Je débute en C# et là je bloque depuis un bon moment sur ce problème.

J'ai créer un Form pour lancer des images (dans une PictureBox)

Je lance cette Form à partir d'une interface graphique en cliquant sur un bouton et, à partir de là, des images défilent automatiquement dans la picturebox de la Form lancée.

J'ai également mis un bouton Arret pour arreter l'affichage de ces images et fermer cette Form.

Cependant, j'aimerais pouvoir relancer l'affichage des images en recliquant sur le bouton de Départ des images.

Voici le code que j'utilise, en notant que j'ai public
Affichage_Image affIm =
new
Affichage_Image(); 

// Gérer l'affichage de la liste d'images

public
void Listim_Click(
object sender,
EventArgs e){

if (!ControleImage){

ControleImage =

true;

//afficher les imagesaffIm.Show();

}

}

// Gérer l'arrêt de l'affichage des images

private
void Stopim_Click(
object sender,
EventArgs e){

if (ControleImage){

ControleImage =

false;affIm.Close();

}

}

Lorsque je lance les images aucun pb, lorsque je clique sur Arrêt la fenetre disparait.

Mais lorsque je reclique sur le lancement d'images, j'ai cette erreur qui apaprait :

Impossible d'accéder à un objet supprimé.
Nom de l'objet : 'Affichage_Image'.

Si quelqu'un sait comment faire pour arrêter le défilement des images, fermer la fenêtre et permettre le relancement des images (du début, pas où elles se sont arretées) je suis vraiment preneur!!

Merci d'avance à vous tous!
A voir également:

6 réponses

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
après avoir fait le close, eaasye de mettre affIm à null,et lors du 'show', fait systématiquement un test : if(affIm null) affIm new Affichage_Image();
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
au lieu de faire affIm.Close();
utilise affIm.Hide();

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

J'ai déjà essayé Hide() mais cela ne fait que cacher la fenêtre, mais le processus continue et les images défielent en mémoire. Et lorsque je clique sur le lancement des images, je reprend là où les images en sont en mémoire.

Moi j'aimerais que le clic sur Arrêt stoppe le défilement des images et me permette de reancer la série dès le début.

Mais merci pour ta réponse rapide.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
"eaasy" -> "essayes", sans les mouffles
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

Et yessssss!!!! Merci  bcp Nikoui!!! Ca marche nickel!!

En mettant:

   // Gérer l'affichage de la liste d'images
        public void Listim_Click(object sender, EventArgs e)
        {
            if (!ControleImage)
            {
                if (affIm == null)
                { affIm = new Affichage_Image(); }
                ControleImage = true;
                //afficher les images
                affIm.Show();

            }

        }

        // Gérer l'arrêt de l'affichage des images
        private void Stopim_Click(object sender, EventArgs e)
        {
            if (ControleImage)
            {
                ControleImage = false;
                affIm.Hide();
                affIm = null;
               
               
            }
        }

Tout se passe comme prévu 

Merci bcp, super sympa!
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
Je pense qu'il vaut mieux mettre affIm.Close() a la place de Hide();... par ce que tu va réinstancier x fenêtre sans jamais les détruire sinon...