Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 2013
-
16 mai 2011 à 18:39
francesfac
Messages postés2Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention14 mars 2012
-
14 mars 2012 à 08:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
francesfac
Messages postés2Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention14 mars 2012 14 mars 2012 à 08:13
Compris...
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 13 mars 2012 à 19:24
bha à vrai dire j'en sais rien, j'ai pas cherché, car c'est pas MON code mais celui de jvuillaume et perso j'ai pas le besoin de fermer plusieurs forms d'un coup donc je me suis jamais penché sur la question, j'ai juste "traduit" un peu mieux son code de base. navré ):
francesfac
Messages postés2Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention14 mars 2012 13 mars 2012 à 18:12
ADN56 --- J'ai l'impression que ton code ferme aussi le formulaire principal... Comment fermer tous les autres tout en le laissant lui ouvert?
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 23 mai 2011 à 13:51
Bonjour,
pour moi le principe du code débutant est bien là
pour étoffer un peu tu pourrais tester si les formulaires peuvent être fermés (gérer un cancel) car si des boites de dialog d'enregistrement sont ouvertes tu perdras toutes tes données
également inclure une gestion d'erreur, au cas ou un module était en train de fermer un des formulaires au moment où tu appuies sur la touche car il se peut qu'il y ait interaction à ce moment là tu auras dans ta variable F un formulaire qui n'aura plus de handle donc erreur d'exécution
bon courage
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 18 mai 2011 à 18:38
JE rejoins en effet TebeCo sur le fait que ton code soit un snippet, maintenant je profite tout de même de l'occasion pour demander des infos à tebeco.
1-Une collection d'objet, pourquoi pas avec des forms ?
2-F(i).Dispose() à la fin de la boucle le tableau F ne continet plus que l'item 0, donc il est vide ?
3-Un événement de la couche ui sans aucune remontée ou test en couche métier ... là dsl je suis trop débutant pour te suivre, si tu as un exemple je suis preneur ;)
4-for i=1 to nb-1, quoi ? le i as integer ? pas besoin i hérite de Nb (en explicit et strict cela marche sans soucis)
5- Il oubli le premier form (oui c'est fait expret, main form)
mais tu veux peut être dire que l'on est pas sur que cela soit bien la main form ? j'ai un peu de mal à te suivre, j'ai juste voulu écrire un peu plus logiquement son code, mais sans mettre vraiment pencher dessus ;)
cordialement et merci des explications
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011 18 mai 2011 à 09:43
Désolé pour la correction automatique du téléphone...
Pour en revenir a ton Code
Ce n'est pas une site ou on jete 10 lignes de code ... On attend plutôt un vrai projet, des explication, justification, choix technique
Au passage voir un Array de formulaire est pour le moins improbable dans n'importe quel projet propre. En général en winform le pattern que tu utilises, bien souvent MVC, fait que tu ne regroupe pas tes objet de la sorte.
L'array n'est jamais vidé ...
Etc.
Je vois que ton Code répond directement a un événement de la couche ui sans aucune remontée ou test en couche métier ...
for i=1 to n-1
Y a rien qui te choques ?
Ou t'as oublié "Option Binary" et tu oublis le premier form
Ou alors tu va publier le dernier form
Ou alors tu n'a fait exprès mais vu que tu ne fait aucun test d'intégrité sur ton Close c'est de la roulette russe
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 18 mai 2011 à 08:02
oula faut faire un xor pour lire lol, peux tu expliquer et devellopper ton "A éviter pour pas mal de raison" car c'est bien de dire attention, mais c'est mieux de l'expliquer ;) cordialement
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011 18 mai 2011 à 02:21
Code a supprimé en demandant dr le placer sur le site adaptez : c'est un snippet pas une source ...
Le Code inclus pas Mal de bas practices et anti pattern
A éviter pour pas Mal de raison ...
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 16 mai 2011 à 18:39
bonsoir, si je puis me permetre j'aurais vu un truc dans le style :
Dim Nb As Integer = My.Application.OpenForms.Count
Dim F(Nb) As Form 'nombre de formulaires ouverts'
If MsgBox("Tout fermer ?", MsgBoxStyle.OkCancel, "tout fermer ?") = MsgBoxResult.Ok Then
For i = 1 To Nb - 1
F(i) = My.Application.OpenForms.Item(i)
F(i).Close()
F(i).Dispose()
Next
End If
14 mars 2012 à 08:13
13 mars 2012 à 19:24
13 mars 2012 à 18:12
23 mai 2011 à 13:51
pour moi le principe du code débutant est bien là
pour étoffer un peu tu pourrais tester si les formulaires peuvent être fermés (gérer un cancel) car si des boites de dialog d'enregistrement sont ouvertes tu perdras toutes tes données
également inclure une gestion d'erreur, au cas ou un module était en train de fermer un des formulaires au moment où tu appuies sur la touche car il se peut qu'il y ait interaction à ce moment là tu auras dans ta variable F un formulaire qui n'aura plus de handle donc erreur d'exécution
bon courage
18 mai 2011 à 18:38
1-Une collection d'objet, pourquoi pas avec des forms ?
2-F(i).Dispose() à la fin de la boucle le tableau F ne continet plus que l'item 0, donc il est vide ?
3-Un événement de la couche ui sans aucune remontée ou test en couche métier ... là dsl je suis trop débutant pour te suivre, si tu as un exemple je suis preneur ;)
4-for i=1 to nb-1, quoi ? le i as integer ? pas besoin i hérite de Nb (en explicit et strict cela marche sans soucis)
5- Il oubli le premier form (oui c'est fait expret, main form)
mais tu veux peut être dire que l'on est pas sur que cela soit bien la main form ? j'ai un peu de mal à te suivre, j'ai juste voulu écrire un peu plus logiquement son code, mais sans mettre vraiment pencher dessus ;)
cordialement et merci des explications
18 mai 2011 à 09:43
Pour en revenir a ton Code
Ce n'est pas une site ou on jete 10 lignes de code ... On attend plutôt un vrai projet, des explication, justification, choix technique
Au passage voir un Array de formulaire est pour le moins improbable dans n'importe quel projet propre. En général en winform le pattern que tu utilises, bien souvent MVC, fait que tu ne regroupe pas tes objet de la sorte.
L'array n'est jamais vidé ...
Etc.
Je vois que ton Code répond directement a un événement de la couche ui sans aucune remontée ou test en couche métier ...
for i=1 to n-1
Y a rien qui te choques ?
Ou t'as oublié "Option Binary" et tu oublis le premier form
Ou alors tu va publier le dernier form
Ou alors tu n'a fait exprès mais vu que tu ne fait aucun test d'intégrité sur ton Close c'est de la roulette russe
18 mai 2011 à 08:02
18 mai 2011 à 02:21
Le Code inclus pas Mal de bas practices et anti pattern
A éviter pour pas Mal de raison ...
16 mai 2011 à 18:39
Dim Nb As Integer = My.Application.OpenForms.Count
Dim F(Nb) As Form 'nombre de formulaires ouverts'
If MsgBox("Tout fermer ?", MsgBoxStyle.OkCancel, "tout fermer ?") = MsgBoxResult.Ok Then
For i = 1 To Nb - 1
F(i) = My.Application.OpenForms.Item(i)
F(i).Close()
F(i).Dispose()
Next
End If
cordialment, bonne prog