Hide ne fonctionne pas ?! [Résolu]

overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 5 janv. 2014 à 21:17 - Dernière réponse : overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention
- 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.
Afficher la suite 

32 réponses

overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 5 janv. 2014 à 22:34
+1
Utile
4
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.
Cette réponse vous a-t-elle aidé ?  
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 janv. 2014 à 07:12
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.
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 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.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 janv. 2014 à 09:23
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 ?
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 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.
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 6 janv. 2014 à 22:17
+1
Utile
1
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
Cette réponse vous a-t-elle aidé ?  
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 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 =)
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 janv. 2014 à 22:08
0
Utile
Bonjour,
J'ignorais que Hide était devenu un "contrôle"' sous VB.Net !
On en "apprend" (hum) tous les jours ...
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 5 janv. 2014 à 23:52
0
Utile
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
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 6 janv. 2014 à 02:09
0
Utile
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.
dj naoki 517 Messages postés mercredi 22 décembre 2010Date d'inscription 25 septembre 2016 Dernière intervention - 6 janv. 2014 à 09:20
0
Utile
11
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
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 6 janv. 2014 à 10:17
Y'a pas de mal ^^ Merci quand même pour ton aide =)
Du coup dsl mais quelle est on pb maintenant ?
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 6 janv. 2014 à 10:26
Le problème à toujours été le même depuis le début ^^ Celui pour lequel tu a répondu à la base ^^
Ci je comprend bien c est form2 qui reste visible alors qu'elle devrais pas l être ?
Dans ce cas c est parce que c est form1 qui doit dire form2.hide
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 6 janv. 2014 à 10:33
Et bien je pensais régler le problème comme sa moi aussi, sauf que le résultat et exactement le même que si je met le me.hide() dans form2... =/
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - Modifié par cs_ShayW le 6/01/2014 à 09:33
0
Utile
1
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
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 6 janv. 2014 à 09:56
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...
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 janv. 2014 à 10:10
0
Utile
1
Quelles sont les instructions qui figurent dans les sub évènementielles de Form1 ?
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 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.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 janv. 2014 à 11:27
0
Utile
1
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.

overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 janv. 2014 à 12:52
0
Utile
1
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 ?
overdoseBMTH 37 Messages postés jeudi 20 janvier 2011Date d'inscription 10 janvier 2014 Dernière intervention - 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 =)
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - Modifié par cs_ShayW le 6/01/2014 à 15:09
0
Utile
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 ?
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 6/01/2014 à 18:46
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.