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

Messages postés
3
Date d'inscription
dimanche 2 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012
- - Dernière réponse :  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.
Afficher la suite 

20/21 réponses

Messages postés
115
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
29 juin 2012
0
Merci
bonjour
peut etre Form1.Label1.Text = "préTest"
@+JP
Commenter la réponse de mjpmjp
0
Merci
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
Commenter la réponse de Utilisateur anonyme
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
3
Date d'inscription
dimanche 2 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012
0
Merci
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à.
Commenter la réponse de RGTL
Messages postés
3
Date d'inscription
dimanche 2 janvier 2011
Statut
Membre
Dernière intervention
21 février 2012
0
Merci
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.
Commenter la réponse de RGTL
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
0
Merci
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
Commenter la réponse de Utilisateur anonyme
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
213
0
Merci
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
Commenter la réponse de ucfoutu
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
213
0
Merci
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
Commenter la réponse de ucfoutu
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
213
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
213
0
Merci
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
Commenter la réponse de ucfoutu
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
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
Commenter la réponse de cs_ShayW
0
Merci
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
Commenter la réponse de Utilisateur anonyme
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
je n'ai pas le vb10
j'ai le visual 2008
Commenter la réponse de cs_ShayW
0
Merci
Ah ok... merci quand-même
Je regarderais ça mieux quand je rentrerais


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme