Je développe une application qui contient deux Forms : mettons Form1 et
Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons :
bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des
Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à
Form2.Show(); le programme plante, car Form2 n'est plus référencée suite au
Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut que
je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une
quelconque manière ?
Je suis en train de migrer C -> C++ -> C# ...
Merci de votre aide
--
Jérémy
begin 666 icon_smile.gif
M1TE&.#EA#P`/`+,.`/_J`$5%10```/_.`/_)`/^T`/Z=`/_^D__]$_______
MQS,S,___Z__E`````````"'Y! $```X`+ `````/``\```1;T$D9:IW85:;.
M&1<6< @"G(,13$$G""?PIJMVF'$.:@H.GS^"*G #QH*%RB''!!"2`=.B"5@\
G*P/9:[L5K@)906(\%A!VFL&@P3736&J"7/X6!0KXPC##LM0F$0`[
`
end
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mitsuru FURUTA [Ms]
Bonjour,
Tout ceci est normal,
Tu as le choix entre conserver la même fenêtre et jouer sur sa visibilité. A utiliser si tu veux par exemple conserver le contexte et refaire réapparaitre la fenêtre dans l'état où tu l'avais fermée. Tu alloues par contre plus de mémoire. Ou, tu détruis la fenêtre à chaque fermeture auquel cas il te faut évidemment la recréer à chaque appel.
En clair c'est à toi de faire ce choix.
Bonne continuation,
Mitsuru FURUTA [Microsoft FRANCE]
"Jérémy S." <outdial at anarchie dot net> wrote in message news:4182f7f6$0$3680$
Salut à tous;
J'explique mon problème.
Je développe une application qui contient deux Forms : mettons Form1 et Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons : bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à Form2.Show(); le programme plante, car Form2 n'est plus référencée suite
au
Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut
que
je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une quelconque manière ?
Je suis en train de migrer C -> C++ -> C# ...
Merci de votre aide
-- Jérémy
Bonjour,
Tout ceci est normal,
Tu as le choix entre conserver la même fenêtre et jouer sur sa visibilité. A
utiliser si tu veux par exemple conserver le contexte et refaire
réapparaitre la fenêtre dans l'état où tu l'avais fermée. Tu alloues par
contre plus de mémoire.
Ou, tu détruis la fenêtre à chaque fermeture auquel cas il te faut
évidemment la recréer à chaque appel.
En clair c'est à toi de faire ce choix.
Bonne continuation,
Mitsuru FURUTA [Microsoft FRANCE]
"Jérémy S." <outdial at anarchie dot net> wrote in message
news:4182f7f6$0$3680$636a15ce@news.free.fr...
Salut à tous;
J'explique mon problème.
Je développe une application qui contient deux Forms : mettons Form1 et
Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons :
bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des
Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à
Form2.Show(); le programme plante, car Form2 n'est plus référencée suite
au
Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut
que
je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une
quelconque manière ?
Tu as le choix entre conserver la même fenêtre et jouer sur sa visibilité. A utiliser si tu veux par exemple conserver le contexte et refaire réapparaitre la fenêtre dans l'état où tu l'avais fermée. Tu alloues par contre plus de mémoire. Ou, tu détruis la fenêtre à chaque fermeture auquel cas il te faut évidemment la recréer à chaque appel.
En clair c'est à toi de faire ce choix.
Bonne continuation,
Mitsuru FURUTA [Microsoft FRANCE]
"Jérémy S." <outdial at anarchie dot net> wrote in message news:4182f7f6$0$3680$
Salut à tous;
J'explique mon problème.
Je développe une application qui contient deux Forms : mettons Form1 et Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons : bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à Form2.Show(); le programme plante, car Form2 n'est plus référencée suite
au
Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut
que
je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une quelconque manière ?
Je suis en train de migrer C -> C++ -> C# ...
Merci de votre aide
-- Jérémy
Lloyd Dupont
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois appeler la resource n'est plus utilisable (un peu comme si tu accedais une memoire que tu as free() en C, sauf que tu as une DisposedException() au lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
"Jérémy S." <outdial at anarchie dot net> wrote in message news:4182f7f6$0$3680$
Salut à tous;
J'explique mon problème.
Je développe une application qui contient deux Forms : mettons Form1 et Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons : bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à Form2.Show(); le programme plante, car Form2 n'est plus référencée suite au Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut que je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une quelconque manière ?
Je suis en train de migrer C -> C++ -> C# ...
Merci de votre aide
-- Jérémy
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des
truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois
appeler la resource n'est plus utilisable (un peu comme si tu accedais une
memoire que tu as free() en C, sauf que tu as une DisposedException() au
lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle
Dispose() et la form n'est plus utilisable!
"Jérémy S." <outdial at anarchie dot net> wrote in message
news:4182f7f6$0$3680$636a15ce@news.free.fr...
Salut à tous;
J'explique mon problème.
Je développe une application qui contient deux Forms : mettons Form1 et
Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons :
bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des
Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à
Form2.Show(); le programme plante, car Form2 n'est plus référencée suite
au Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut
que je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une
quelconque manière ?
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois appeler la resource n'est plus utilisable (un peu comme si tu accedais une memoire que tu as free() en C, sauf que tu as une DisposedException() au lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
"Jérémy S." <outdial at anarchie dot net> wrote in message news:4182f7f6$0$3680$
Salut à tous;
J'explique mon problème.
Je développe une application qui contient deux Forms : mettons Form1 et Form2.
Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
Sur Form2, j'ai deux boutons : bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des Show/Hide, tout se passe bien.
Mais si je me sers de Form2.button3, ça Close, et au prochain appel à Form2.Show(); le programme plante, car Form2 n'est plus référencée suite au Close() (je pense).
Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut que je recrée une instance de Form2 ?
Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une quelconque manière ?
Je suis en train de migrer C -> C++ -> C# ...
Merci de votre aide
-- Jérémy
LEBRUN Thomas
> les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui va faire le ménage ;)
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"Lloyd Dupont" a écrit :
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois appeler la resource n'est plus utilisable (un peu comme si tu accedais une memoire que tu as free() en C, sauf que tu as une DisposedException() au lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
"Jérémy S." <outdial at anarchie dot net> wrote in message news:4182f7f6$0$3680$ > Salut à tous; > > J'explique mon problème. > > Je développe une application qui contient deux Forms : mettons Form1 et > Form2. > > Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show(); > > Sur Form2, j'ai deux boutons : > bouton2 qui appelle Hide(); et bouton3 qui appelle Close(); > > Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des > Show/Hide, tout se passe bien. > > Mais si je me sers de Form2.button3, ça Close, et au prochain appel à > Form2.Show(); le programme plante, car Form2 n'est plus référencée suite > au Close() (je pense). > > Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut > que je recrée une instance de Form2 ? > > Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une > quelconque manière ? > > Je suis en train de migrer C -> C++ -> C# ... > > Merci de votre aide > > -- > Jérémy > >
> les Form sont un exemple typique de ce genre resource, Close() appelle
Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu
considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui
va faire le ménage ;)
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
http://blog.developpez.com/index.php?blog=9
"Lloyd Dupont" a écrit :
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des
truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois
appeler la resource n'est plus utilisable (un peu comme si tu accedais une
memoire que tu as free() en C, sauf que tu as une DisposedException() au
lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle
Dispose() et la form n'est plus utilisable!
"Jérémy S." <outdial at anarchie dot net> wrote in message
news:4182f7f6$0$3680$636a15ce@news.free.fr...
> Salut à tous;
>
> J'explique mon problème.
>
> Je développe une application qui contient deux Forms : mettons Form1 et
> Form2.
>
> Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show();
>
> Sur Form2, j'ai deux boutons :
> bouton2 qui appelle Hide(); et bouton3 qui appelle Close();
>
> Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des
> Show/Hide, tout se passe bien.
>
> Mais si je me sers de Form2.button3, ça Close, et au prochain appel à
> Form2.Show(); le programme plante, car Form2 n'est plus référencée suite
> au Close() (je pense).
>
> Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut
> que je recrée une instance de Form2 ?
>
> Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une
> quelconque manière ?
>
> Je suis en train de migrer C -> C++ -> C# ...
>
> Merci de votre aide
>
> --
> Jérémy
>
>
> les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui va faire le ménage ;)
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
"Lloyd Dupont" a écrit :
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois appeler la resource n'est plus utilisable (un peu comme si tu accedais une memoire que tu as free() en C, sauf que tu as une DisposedException() au lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
"Jérémy S." <outdial at anarchie dot net> wrote in message news:4182f7f6$0$3680$ > Salut à tous; > > J'explique mon problème. > > Je développe une application qui contient deux Forms : mettons Form1 et > Form2. > > Sur Form1, j'ai un bouton1 qui appelle la méthode Form2.Show(); > > Sur Form2, j'ai deux boutons : > bouton2 qui appelle Hide(); et bouton3 qui appelle Close(); > > Si je me sers que de Form1.bouton1 et de Form2.bouton2, ça ne fait que des > Show/Hide, tout se passe bien. > > Mais si je me sers de Form2.button3, ça Close, et au prochain appel à > Form2.Show(); le programme plante, car Form2 n'est plus référencée suite > au Close() (je pense). > > Ma question est : y a t'il moyen de contourner cela ou est ce qu'il faut > que je recrée une instance de Form2 ? > > Et si oui, y a t'il besoin de vider la mémoire de l'ancien Form2 d'une > quelconque manière ? > > Je suis en train de migrer C -> C++ -> C# ... > > Merci de votre aide > > -- > Jérémy > >
Elp
On Mon, 1 Nov 2004 07:29:05 -0800, LEBRUN Thomas wrote:
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui va faire le ménage ;)
Oui, c'est logique. Ce qui me dérange cependant dans cette histoire c'est que d'apres la doc le comportement des methodes Close et Hide (et des méthodes Show et ShowDialog une fois la forme disparue) sont différentes en fonction du fait que la form soit modale ou non. Et ce n'est a mon avis pas tres clairement expliqué dans la doc.
On Mon, 1 Nov 2004 07:29:05 -0800, LEBRUN Thomas wrote:
les Form sont un exemple typique de ce genre resource, Close() appelle
Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu
considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui
va faire le ménage ;)
Oui, c'est logique. Ce qui me dérange cependant dans cette histoire c'est
que d'apres la doc le comportement des methodes Close et Hide (et des
méthodes Show et ShowDialog une fois la forme disparue) sont différentes en
fonction du fait que la form soit modale ou non. Et ce n'est a mon avis pas
tres clairement expliqué dans la doc.
On Mon, 1 Nov 2004 07:29:05 -0800, LEBRUN Thomas wrote:
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui va faire le ménage ;)
Oui, c'est logique. Ce qui me dérange cependant dans cette histoire c'est que d'apres la doc le comportement des methodes Close et Hide (et des méthodes Show et ShowDialog une fois la forme disparue) sont différentes en fonction du fait que la form soit modale ou non. Et ce n'est a mon avis pas tres clairement expliqué dans la doc.
Jérémy S.
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news:
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui va faire le ménage ;)
A+
OK, le développeur peut choisir de Hide() plutot que Close().
Mais si le form est fermé par l'utilisateur avec "la croix" ou ALTF4..
En fait, c'etait ça mon problème, mais j'ai simplifié...
-- Jérémy
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois appeler la resource n'est plus utilisable (un peu comme si tu accedais une memoire que tu as free() en C, sauf que tu as une DisposedException() au lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news: 8138AD5D-F78D-4040-A88E-26A6A384BD7B@microsoft.com...
les Form sont un exemple typique de ce genre resource, Close() appelle
Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu
considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose()
qui
va faire le ménage ;)
A+
OK, le développeur peut choisir de Hide() plutot que Close().
Mais si le form est fermé par l'utilisateur avec "la croix" ou ALTF4..
En fait, c'etait ça mon problème, mais j'ai simplifié...
--
Jérémy
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
http://blog.developpez.com/index.php?blog=9
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des
truc non manage, c'est pour cela qu'il y a la methode Dispose() et une
fois
appeler la resource n'est plus utilisable (un peu comme si tu accedais
une
memoire que tu as free() en C, sauf que tu as une DisposedException() au
lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle
Dispose() et la form n'est plus utilisable!
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news:
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!
Ce qui, d'après moi, est logique: si tu fermes ta fenêtre, c'est que tu considères que tu ne va plus avoir à l'utiliser. D'où l'appel à Dispose() qui va faire le ménage ;)
A+
OK, le développeur peut choisir de Hide() plutot que Close().
Mais si le form est fermé par l'utilisateur avec "la croix" ou ALTF4..
En fait, c'etait ça mon problème, mais j'ai simplifié...
-- Jérémy
------------------- LEBRUN Thomas http://morpheus.developpez.com http://blog.developpez.com/index.php?blog=9
oui y'a un piege qui n'est pas evident dans le monde managed, il y a des truc non manage, c'est pour cela qu'il y a la methode Dispose() et une fois appeler la resource n'est plus utilisable (un peu comme si tu accedais une memoire que tu as free() en C, sauf que tu as une DisposedException() au lieu de crash-pouf, memory corruption...)
les Form sont un exemple typique de ce genre resource, Close() appelle Dispose() et la form n'est plus utilisable!