Hide ne fonctionne pas ?!

Résolu
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 - 5 janv. 2014 à 21:17
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 - 10 janv. 2014 à 17:49
Bonjour,

pour une raison qui m'échappe le contrôle "hide" ne fonctionne pas au load.

Je vous explique : J'ai deux form, form1 et form2, la deuxième concerne des paramètre utilisateurs. Sa fonctionne comme ça : form2 se lance, vérifie les paramètres, si ils sont complet form 2 se ferme et ouvre form1. Donc, mon code ressemble à sa :

Me.Hide()
Form1.Show()

Le problème c'est que le Show de la form1 fonctionne, mais la form2 reste afficher malgré le Hide.

Sur VB6 j'avais pas se genre de soucis avec se code mais la, visiblement ça ne fonctionne pas.

Si quelqu'un à une solution, je suis preneur =)

Merci d'avance.

12 réponses

overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
5 janv. 2014 à 22:34
Je savais que certain forum avais la réputation d'héberger la science infuse mais j'étais loin d'imaginer qu'on pouvais y trouver des gens avec un sens de la pédagogie aussi développer =D

Par contre, j'aimerais bien que mon code foireux fonctionne aussi bien que ton ironie.
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 6/01/2014 à 08:07
Aucune science ne saurait être infuse. On peut par contre s'inquiéter lorsqu'elle est diffuse...
C'est tout simplement qu'un contrôle est un objet. Hide est une méthode.
La connaissance de la signification des mots et leur utilisation à bon escient sont en général révélatrices de ce que l'on a une idée claire de ce dont on parle. Elles permettent surtout de discuter en connaissance de cause.
Une porte, par exemple, est un objet. Ouvrir est une méthode (qui pourrait d'ailleurs s'appliquer à d'autres objets qu'une porte : un tiroir, une fenêtre, etc ...)
Voilà ...
PS : j'ajoute que l'on ne saurait, par exemple, ouvrir une porte qui n'a pas encore été complètement installée.
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 08:50
Bah voila, quand tu explique c'est tout de suite beaucoup mieux !
Relever une erreur que tu trouve idiote ne veux pas dire qu'elle l'est nécessairement, je suis ouvert au dialogue, totalement prêt à apprendre de mes erreurs et je n'ai en aucun cas la moindre honte à ne pas connaitre certaine chose.
Je ne suis pas programmeur, je bidouilles des petits programmes une fois tout les ans (quand une idée me vient) pour m'amuser, il y a certaine base qui m'échappe encore totalement.

Si tu avais commencer par m'expliquer sa tranquillement au lieux de me prendre de haut pour une erreur à la con crois moi que j'aurais apprécier.
Et encore moi j'suis gentil tu vois, je répond calmement, y'en a d'autre qui t'aurait certainement déjà envoyer chier depuis longtemps.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 6/01/2014 à 09:47
Si tu es ici, ami, c'est que tu es un développeur.
Ce forum est un forum de développeurs et non un forum d'apprentissage au développement.
Te mettrais-tu à une table de bridge sans connaître les conventions et bases de ce jeu, sans même savoir ce qu'est une annonce ?
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 09:50
Ecoute, je sais pas quel est ton problème mais t'es le seul que sa dérange, oui je code occasionnellement en autodidacte et ça n'a jamais empêcher les gens de ce forum de m'aider quand j'avais un petit problème tout con. Au pire si ce genre de truc t'embête j'vois même pas pourquoi tu viens, si ce n'est que pour vanné les gens moins bon que toi... C'est franchement petit de faire ça.
0
dj naoki Messages postés 511 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 septembre 2016 2
6 janv. 2014 à 09:20
salut, je pense que tu ne peut pas mettre directement le hide au load a la rigueur essayer(je ne suis pas sur) de mettre :

Public Class Form2

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Form1.Visible = False
'ou alors a la place du bouton
'action a executer
'a la fin
'Me.Visible = False
'Form1.Visible = True
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Visible = False
Form1.Visible = True
End Sub
End Class


/!\ vérifie bien que ton projet ce lance bien avec form2 dans "MY Project" dans l'onglet "application" a "formulaire de démarrage" la tu choisis form2
1
A la rigeure utilise peut etre plus le code de cs_ShayW qui me semble plus propre que le mien :p
Bonne journée
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 09:57
Merci pour ta réponse,

Enfaîte je crois que t'a raison. J'ai aussi tester de passer form2 en visible = false mais le résultat et exactement le même qu'avec Hide.
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
Modifié par overdoseBMTH le 6/01/2014 à 09:59
Plus propre je sais pas, en tout cas j'ai toujours le même problème ^^
0
Dans ce cas la envoi ton instruction form2.close() que quand tu a besoin de fermer ton prog et laisse form2 en hide comme ça tu met dans l événement form1.closing le fameux form2.close() comme ca quand tu ferme form1 ca ferme le prog
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 10:09
Ha mais j'ai pas le moindre problème de ce coté la, je comprend pas trop ou tu veux en venir enfaîte.. ^^
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 janv. 2014 à 22:17
Après avoir cherché overdoseBMTH a raison hide ne fonctionne pas
mais .... cela dépend du windowstate

je place deux form form1 et form2
je definis le windowstate de chacun as normal
le code de form1
Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Width = 600
Me.Height = 600
Me.Location = New Point(0, 0)

End Sub
End Class

le code de form2

Public Class Form2

Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Width = 600
Me.Height = 600
Me.Location = New Point(620, 0)
Me.Hide()
Form1.Show()
End Sub
End Class

je lance le prog et form1 et form2 sont visible
je change le windowstate de form2 à Maximized
et la quand on lance le prog form2 est bien caché et form1 visible
1
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
10 janv. 2014 à 17:49
Effectivement, en modifiant le windowstate sa marche ! =D

Merci beaucoup pour ton aide, et merci à tout les autres pour leur participation =)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 janv. 2014 à 22:08
Bonjour,
J'ignorais que Hide était devenu un "contrôle"' sous VB.Net !
On en "apprend" (hum) tous les jours ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
5 janv. 2014 à 23:52
Bonjour

Sa fonctionne comme ça : form2 se lance, vérifie les paramètres, si ils sont complet form 2 se ferme et ouvre form1. Donc, mon code ressemble à sa :

veux tu fermer form2 ou cacher form2 ?
fermer -> n'est plus en mémoire donc plus visible
cacher -> est toujours en mémoire mais aussi pas visible
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 02:09
Merci pour ta réponse.

Je cherche simplement à la cacher (je pense que Hide est fait pour ça) j'y arrive en mettant la commande dans un bouton mais au load le code tel quel ne cache pas form2, il ne fait qu'ouvrir form1 par au dessus, je comprend pas dutout pourquoi.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 6/01/2014 à 09:33
Dans les propriétés de ton projet le startup form c'est bien form2?

je n'ai pas de problème avec ce code

Public Class Form2
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'code verifie parametreS
Me.Hide()
Form1.Show()
End Sub
End Class


aussi au point de vu conception si tu n'utilise plus form2 dans la suite de ton application vaut mieux le fermer
d'abord on ouvre form1 et on ferme form2
ce qui donne
Public Class Form2
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'code verifie parametreS
Form1.Show()
Me.Close()
End Sub
End Class
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
Modifié par overdoseBMTH le 6/01/2014 à 10:01
Merci pour ta réponse,

Effectivement form2 et bien en startup form.

Par contre je comprend pas ton deuxième exemple, si je met Me.Close() sur form2 c'est toute l'application qui va se fermer non ?

En ce qui concerne ton premier exemple, j'ai du mal à comprendre pourquoi cette option fonctionne pour toi et pas pour moi, tout ce que ce code fait, c'est ouvrir form1 devant form2, mais form2 est toujours visible...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 janv. 2014 à 10:10
Quelles sont les instructions qui figurent dans les sub évènementielles de Form1 ?
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 10:17
Et bah justement, au départ je pensais qu'un morceau de mon code empêchais form2.Hide() de fonctionner correctement donc j'ai refait un nouveau projet avec simplement 2 form et dans le load de form2 j'ai simplement mis : Form1.Show()
Me.Hide()

Mais le résultat et tout le temps le même alors sois c'est impossible à faire ou alors j'ai oublier quelque chose... Même si j'ai un peu de mal à me dire que c'est pas possible à faire.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 janv. 2014 à 11:27
On dirait alors que sous VB.Net, un Form ne sait agir sur lui-même au moment de son chargement (l'histoire de mon PS plus haut au sujet de la "porte que l'on ne peut ouvrir tant qu'elle n'a pas été complètement installée).
As-tu essayé avec un autre évènement que le load ?
Tu devrais également essayer (juste pour voir) d'appliquer ta méthode Hide sur Form2 depuis un module public (en lui passant Form2 en paramètre)
Si rien de tout cela ne marche, il te reste le palliatif suivant :
Me.WindowState = FormWindowState.Minimized

Me.ShowInTaskbar = False
qui rendra invisible ton Form.

0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 11:51
Je comprend tout à fait ce que tu veux dire, mais suivant se résonnement le form2.hide() au load du form1 devrait fonctionner non ?

Non je n'ai pas tester d'autre méthode, je ne sais pas trop sur quoi m'orienté enfaîte, y'a certainement mieux que ce que j'ai fait.
Enfaîte le but du chargement du form2 et de vérifier les informations (enregistrer avec la méthode des paramètres d'application), si les paramètres sont incomplet ou absent form2 reste visible, sinon form2 hide et form1 show
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 janv. 2014 à 12:52
Mais tu as pourtant écrit :
citation :
" j'ai refait un nouveau projet avec simplement 2 form et dans le load de form2 j'ai simplement mis : Form1.Show()
Me.Hide()
Mais le résultat et tout le temps le même
"
Et dans ce cas : aucune autre instruction (de vérification ou autre), pourtant !
Non ?
0
overdoseBMTH Messages postés 37 Date d'inscription jeudi 20 janvier 2011 Statut Membre Dernière intervention 10 janvier 2014 1
6 janv. 2014 à 13:01
Oui je dit pas le contraire, ce que je voulais dire c'est que j'ai peut être pas choisi le meilleur moyen de faire ce que je voulais, il existe peut être un moyen autre que celui la que je ne connait pas et qui éviterais que form2 sois obliger de s'ouvrir pour en vérifier le contenu =)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 6/01/2014 à 15:09
selon le deuxieme exemple
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'code verifie parametreS
Form1.Show()
Me.Close()
End Sub

Par contre je comprend pas ton deuxième exemple, si je met Me.Close() sur form2 c'est toute l'application qui va se fermer non ?
non
seulement form2 se ferme
quand tu lances ton prog les instructions de form2_load sont executées un par un
donc d'abord le code qui verifie les parametres
ensuite form1.show
et me.close ,la me correspond à form2


Tu dis form1 devant form2, mais form2 est toujours visible...
Quel est le windowstate de form1 et form2 ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 6/01/2014 à 18:46
Je ne connais de VB.Net que très peu de choses (je développe sous VB6)
Je me dis toutefois que VB.Net (je l'ai déjà dit plus haut) a des difficultés à reconnaitre le Me d'un Form dans l'évènement Load de ce form.
Et si on essayait de lui forcer la main en agissant sur une autre instance de ce form ? Ainsi, par exemple :

Dim toto As Form2
toto = New Form2()
toto.Hide()

Il se peut que mes parenthèses soient à supprimer ? (je n'en sais rien...)

Quelqu'un (qui possède VB.Net) pour tenter cela ou quelque-chose du genre (plus en conformité avec VB.Net) ?

PS : il se peut qu'il ne soit par ailleurs pas bête, puisqu'en évènement Load, d'utiliser un DoEvents


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Rejoignez-nous