Gros probleme de form [vb.net]

Signaler
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008
-
Salu A tous!



g un blem avec mes forms car voila j'ai 3 form:

et je veut en gros que:

a 1ere form devienne caché et lance la 2eme


la 2eme devient inactive (enabled = false) et lance la 3eme form


la 3eme permet dès qu'elle devient cachée, de reactiver la 2eme



j'ai donc contruit ce code:



sur la form1:


Dim form2 As New form2


form2.show

Me.hide



sur la form2:


Dim form3 As New form3


form3.show

Me.enabled = false



sur la form3:

Dim form2 as form2

form2.enabled = True

Me.hide




lorsque je mets ce code, visual me dit qu'il y as une erreur que le
code sur la form3 me mettant que il faut que je mette un "new" pour
declarer la form2 a la form3


donc des que je remplace:


Dim form2 As form2


par

Dim form2 As New form2





il me mets un autres message d'erreur du type: systemoverflowexecption


en tooltip il mets: "make sure you do not have an infinate loop or infinate recursion"





voila,voila je sais pas trop comment resoudre ce bordel. pour toute reponse: d'avance merci !


@+

L U C Y I3 E R @ D

11 réponses

Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

bin dsl mais tu as deja posté et j'en reviens au meme constat:
sur la form1:
Dim form2 As New form2
form2.show
Me.hide

sur la form2:
Dim form3 As New form3
form3.show
Me.enabled = false

sur la form3:
Dim form2 as new form2
form2.enabled = True
Me.hide

--->
sur la form1:
Dim form2 As New form2
sur la form3:
Dim form2 as new form2
--------------->>>>> Form2 existe deja tu l'as crée dans la "sur la form1" alors pk faire de nouveau un "new" dans le "sur la form3", ne peux tu pas directement declarer le "form2.enabled = true" ?

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
3
ben voila la c clair (en tt cas je l'avais posté que j'avé pas compris
mais comme mon blem etait plus dans la liste je l'ai reposté ici)



la j'arriv a comprendre, c nickel et ca marche



MERCI LIQUIDE !



bonne prog a tous

@+

L U C Y I3 E R @ D
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
3
euh chuis dsl liquide mais je me suis trompe j'ai mis que ca fonctionnait car j'ai en fait mis form2.enabled = true sur la form2

en fait j'ai fais comme tu m'as dit en ne mettant pas de declartion sur
la form3 et il me mets form2.enabled en souligné bleu en mettant comme
tooltip:

reference to a non shared member requires an object reference.

il veut pas me reconnaitre form2 car il n'est pas déclaré



dsl pour la fausse info d'avant


@+

L U C Y I3 E R @ D
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

si ces forms sont fixes, declares les en global dans un module et ensuite tu les active ou les rend visibles a volonté

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

j'ai juste une idée qui pourrait te simplifié la tache, je lache le code
********** dans un module
Module Module1

Public F1
As
New
Form1

Public F2
As
New
Form2

Public
Function ActivedForm(
ByVal F
As
Object,
ByVal Enabled
As
Boolean,
ByVal Visible
As
Boolean,
ByVal BtoFront
As
Boolean)
As
Boolean
Dim Nf
As
Form

If
TypeOf F
Is Form
Then
Nf =
CType (F, Form)

With Nf
.Enabled = Enabled
.Visible = Visible

If BtoFront =
True
Then .BringToFront()
Else
.SendToBack()

End
With
return true
End
If

End
Function
End
Module

********pour la form
Private
Sub Test1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase
.Load

Call ActivedForm(F1,
False,
True,
True)

End
Sub

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
3
merci de ta reponse fodrait que je me renseigne sur les modules ca a l'air bien pratique. je vais me documenter dessus.



(chuis un gros noob donc c pour ca que je connais pas mais bon quand on fais de l'auto-formation c normal ^^)



merci et
@+

L U C Y I3 E R @ D
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

salut, bin tu utilise la meme procedure que pour ajouter une form, mais tu selectionnes un module et dedans tu colles ce que je t'ai donné, c'est tout (vire juste l'entete et la fin)

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
3
g reussi!

bon j'ai pas trouvé de tuto pour les modules mais apres plusieurs essai
j'ai trouvé (restifi moi si je me trompe) qyue ca permettait de faire
en sorte que du code soit a accesible a tous le mionde quand il est mis
dedans



donc j'ai fais comme ca:

j'ai declaré mes 3 form dans le module et j'ai fais des sub (encore un truc que je vien d'apprendre tout seul, je l'utilisait avant mais c'etait a chaque fois generé par visual ^^) :

public sub form2enabled()

form2.enabled = true

end sub



sur la form3 y'as pu qu'as mettre ce code:

call form2enabled()



et ca marche, j'ai donc juste declaré 1
seule fois mes forms: dans le module (meme si g pas tout compris c pas
grave j'y arrive comme ca et ca viendra avec l'experience), merci a toi
liquide j'aivraiment apris plein de truc grace a toa ^^


@+

L U C Y I3 E R @ D
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

voila, tu as creer des procédures, mais ce qui est mieux de faire c'est qu'une seule procedure que tu appelles de n'importe ou, ou tu lui dit qu'elle form (f1,f2,3) tu veux gerer et de quelle maniere elle doit faire (enabled, visible, backcolor etc etc etc a volonté).
donc .... 1 seule procedure pour toute tes formes, gain de place et de programmation

je te l'avais mis en function au lieu de procédure sub pour qu'il active le retour "true" , bien que la il etait mal programmé :D.

puis essais de passer les dim F1 as new form1 en public F1 as new form1

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
3
ok...

ca change quoi de mettre public a la place de dim?

@+

L U C Y I3 E R @ D
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

public fait que tu le rend public lol, le dim n'est valide que pour la class ou la procedure auquel il associé, quand il est definit sur la class, il est valide aussi pour les procedures internes a la class

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide