Le code contenu dans Sub Form_Load ne s'execute pas au débbogage

RGTL Messages postés 3 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 21 février 2012 - 21 févr. 2012 à 00:12
 Utilisateur anonyme - 24 févr. 2012 à 00:28
Bonjour,

J'ai un problème étonnant : Au chargement du formulaire de base, aucun code ne s’exécute. Il n'y a même pas de détection des erreurs. Par exemple, le label1 affichera "label1" malgré que je lui assigne un texte "prétest" :

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs)
_Handles MyBase.Load

        Label1.Text = "préTest"

    End Sub


Par contre si je crée un bouton et assigne un nouveau texte au label lors du clic, le code va s’exécuter et visual studio va détecter des erreurs.

Sinon, un petit renseignement, que renvoie My.ressources.doc.txt? Le texte contenu? Comment obtenir un "path" afin de l'utiliser comme argument d'un "StreamReader".

Merci, bonne soirée.

21 réponses

mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
21 févr. 2012 à 00:18
bonjour
peut etre Form1.Label1.Text = "préTest"
@+JP
0
Utilisateur anonyme
21 févr. 2012 à 00:23
Bonjour,
aucun code ne s'exécute

Eh bien... j'ai eu ce problème bizarre deux fois également.
Je croyais que le coupable était mon PC, vu tout ce que j'ai installé dessus.

Par contre, par chance c'était juste un petit test sans importance, j'ai fermé VS j'ai refait un autre programme et pas de problème...

J'ai windows 7 32 bits et toi?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
21 févr. 2012 à 00:27
Salut mjpmjp,

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs)_Handles MyBase.Load
  Label1.Text = "préTest"
End Sub


J'avais même mis un point d'arrêt derrière Label1.Text et le programme démarre normalement sans jamais s'arrêter...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
RGTL Messages postés 3 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 21 février 2012
21 févr. 2012 à 00:32
C'est en partie réglé. Le code ne s’exécutait pas parce qu'il y avait une erreur avant. Mais c'est qui est étonnant puisque l'erreur ne m'est pas signifié, rien ne se passe, pas de bug, mais l'exécution du code s'arrête...

Sinon, pour ma deuxième question c'est réglé, je me prennais la tête pour rien puisque My.Ressources permet d'accéder directement au contenu du fichier.

Merci mjpmjp mais apparemment le problème ne vient pas de là.
0

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

Posez votre question
RGTL Messages postés 3 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 21 février 2012
21 févr. 2012 à 00:35
J'ai recréer un nouveau projet, Visual Studio a été installé récemment. J'ai un peu joué avec les boutons concernant les tests (sans y comprendre grand chose, je l'avoue) mais ça m'étonnerais que ça reste ancré dans ma configuration.
0
Utilisateur anonyme
21 févr. 2012 à 04:27
Bonsoir chez-nous, bonjour chez-vous,

J'ai découvert que VB 2010 peut avoir des "comportements délinquants" en cas d'erreur, comme par exemple afficher une "form" sans autre forme de procès.

As-tu essayé l'exécution au pas-à-pas (touche F8) dès le début. Il va te faire passer par les instructions d'initialisation et le "desinger". Avec un peu de chance, tu devrais trouver l'haïssable qui fait ouvrir la form trop vite.

Clément Marcotte
Amos (Québec)
Gestionnaire de formation, programmeur de passion.
0
Utilisateur anonyme
21 févr. 2012 à 12:03
Salut marcotte,

Oui j'avais essayé, aucun code ne s’exécutait, même pas dans le Private Sub Form1_Load
Par contre je ne m'en rappelle plus si j'avais des erreurs mais c'est possible.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
21 févr. 2012 à 16:58
Bonjour,

Ce programme, ici-même sur Codes-Sources a un comportement similaire chez-moi. Pour une raison que je ne m'explique pas, cela arrive que la Form s'ouvre bien avant que que la sub Form_Load ne puisse s'exécuter.

http://www.vbfrance.com/codes/PUZZLE-FORMES-PERSONNALISEES_50772.aspx

Pour m'en sortir, j'ai dû mettre des bouts de code soit dans les événements de l'application, soit juste avant la sub initializecomponents.

P.S. Je suis au McDo avec mon portable, mais mes sources sont sur un disque externe qui est resté chez moi.
0
Utilisateur anonyme
21 févr. 2012 à 17:03
Alors le mien, même si je rajoute un bouton sur la Form il n’apparaît même pas... bizarre
Du coup j'ai tout supprimé.

Bon appétit!...



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2012 à 17:37
Bonjour,
Lorsque l'on change une propriété d'un contrôle, on déclenche l'évènement Paint ===>> et on voit donc ce qui existait avant la modif, si le contrôle considéré n'a pas fini d'être chargé.

Il n'est pas toujours heureux, à mon sens, d'intervenir ainsi tant que le chargement (le Load) n'est pas complètement terminé.

J'évite personnellement en général de mettre dans l'évènement Load du code qui modifie les contrôles à charger.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
21 févr. 2012 à 17:51
Salut Uc,

Oui, je suis d'accord avec toi, mais la je viens de retomber sur le même problème à l'instant...

J'ai commencé, j'ai mis 4 textbox en suite j'ai ajouté dynamiquement quelques boutons et... pas de boutons!

Je reviens sur la form et je supprime tout, rien à faire mes 4 textbox sont toujours affichés et rien d'autre, portant ma Form est complètement vide.

Bizarre non?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2012 à 18:02
Bonjour, acive
j'ai ajouté dynamiquement quelques boutons et... pas de boutons!

et ce faisant, tu as également déclenché l'évènement Paint (et pas encore de bouton visible)
Je crois bien avoir un jour vu passer une discussion à ce sujet, sur ce forum. Je vais la chercher.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
21 févr. 2012 à 18:05
Merci Uc, pour moi c'est une première...

Alors,
Il s'agit semblablement d'une erreur (non signalée) dans le code.

J'ai supprimé tout le code et j'ai ajouté juste mes boutons, comme ça:
Public Class Form1
    Dim Btn(0) As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Rt As Integer = 1 To 22
            ReDim Preserve Btn(Rt)
            Btn(Rt) = New Button
            Controls.Add(Btn(Rt))
            If Rt > 1 Then Btn(Rt).Top = Btn(Rt - 1).Top + Btn(Rt).Height
        Next
    End Sub
End Class


Et tout fonctionne normalement...
Je vous tien au courant par la suite...




Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2012 à 18:08
La voilà (pas rigoureusement identique, mais même punition pour le même motif) :
Tapez le texte de l'url ici.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2012 à 18:23
Je viens d'aller jeter un coup d'oeil au code (je ne peux le tester, n'étant pas sous VB6)
Qu'y vois-je ?
D'entrée de jeu ===>> Paint forcé par (entre autres) :
g_colcadre = Color.Blue.ToArgb
g_colfond = Color.LightSteelBlue.ToArgb
g_colfondcadre = Color.SteelBlue.ToArgb
g_colombre = Color.Black.ToArgb
'#### VARIABLES
g_epaisseur = 2
'on charge les bords et coins par defaut
ChargeValeurs()
'#### FORM
Me.WindowState = FormWindowState.Maximized 

et plus bas : toute une série d'opérations gourmandes en temps
et seulement alors les Add ...
Pas étonnant, alors, avec tous ces risques.
Ce n'est pas une erreur dans le code, c'est la chronologie des choses.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
21 févr. 2012 à 18:31
Oui, l'ordre chronologique reste une erreur de conception du code.

Merci en tout cas, je m'en rappelle d'avoir suivi un peu cette discussion, mais quand le problème ne se présente pas chez nous...

Reinfield a surement raison concernant le InitializeComponent, mais j'ai pas trop cherché non plus et le ResumeLayout false/true c'est a tester.

En VB.net 2010 lorsqu'on a une erreur dans le code le programme ne démarre pas (il la signale uniquement).
Maintenant je n'ai rien fait de spécial, ni constantes, ni quoi que ce soit qui affecterait la form ou les contrôles (sauf que j'en ai rajouté).

Bref, je vais approfondir le sujet lors du prochain plaintage


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
23 févr. 2012 à 15:22
Salut Acive

Public Class Form1
    Dim Btn(0) As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Rt As Integer = 1 To 22
            ReDim Preserve Btn(Rt)
            Btn(Rt) = New Button
            Controls.Add(Btn(Rt))
            If Rt > 1 Then Btn(Rt).Top = Btn(Rt - 1).Top + Btn(Rt).Height
        Next
    End Sub
End Class


ça cloche
si tu déclare Dim Btn(0) As Button
et dans ta loop va de 1 to 22
le btn(0) n'est pas ajouté à ta form
tu peux écrire comme ça


Public Class Form1
    Dim Btn() As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Rt As Integer = 0 To 21
            ReDim Preserve Btn(Rt)
            Btn(Rt) = New Button
            Controls.Add(Btn(Rt))
            If Rt > 1 Then Btn(Rt).Top = Btn(Rt - 1).Top + Btn(Rt).Height
        Next
    End Sub
End Class


ou tu peux utiliser List(Of Button)
le lien apporté par Ucfoutu
un bug qui me tracassait
l'évenement paint était éxecuté avant le load
pourquoi
le paint event est relevé si il faut "repeindre ta form" ou ta panel
comme j'avais placé avec l'ide une panel backcolor transparent ça déclenché le paint de la panel lors du lancement et si dans le code
du paint il y a une variable qui est initialisé
dans le load tu obtiens une erreur
pour cela tu as le new de ta form
Public Sub New()

qui est le construtor de la form et toujours
exécuté en premier

En vb6 il faut moins se casser le nez
0
Utilisateur anonyme
23 févr. 2012 à 15:36
D'accord Shay,

J'ai pas trop eu le temps de me pencher sur ce problème, mais ça m'inquiète un peu.

Essaye de télécharger ma windowsapplication2 DANS CE LIEN qui déconne et tu me dis si ça marche chez toi.

Merci

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
23 févr. 2012 à 16:00
je n'ai pas le vb10
j'ai le visual 2008
0
Utilisateur anonyme
23 févr. 2012 à 16:02
Ah ok... merci quand-même
Je regarderais ça mieux quand je rentrerais


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Rejoignez-nous