Load event et paint event [Résolu]

cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 21 déc. 2011 à 22:05 - Dernière réponse : Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention
- 23 déc. 2011 à 07:10
Bonsoir/Bonjour à tous

J'ai deux évenements
form1_load et form1_paint
je voudrais que form1_load soit executé avant
form1_paint parcequ'un dépend de l'autre

Merci
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 23 déc. 2011 à 07:10
3
Merci
vu...

c'est le
Me.ResumeLayout(False)
dans ton InitializeComponent de ta Form qui fait cela.
souhaitant dessiner le panel, il lui faut au moins la zone sise en dessous, du coup => Form1_Paint est appelé.

bien vu que tu as solutionné cela en chargeant ton image dans le _Paint.

une autre solution est de le faire en amont :

Partial Class Form1
    Private Image1 As Image = Nothing

    Public Sub New()
        Image1 = Image.FromFile("C:\Documents and Settings\rthomas.BUDAPLAN\Mes documents\Mes images\wallpaper-757058.jpg")
        InitializeComponent()
    End Sub

    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        e.Graphics.DrawImage(Image1, 0, 0)
    End Sub
End Class



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Renfield
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2011 à 22:11
0
Merci
Bonsoir,

l'évènement Load (de chargement) est DE TOUTES MANIERES le tout premier à intervenir (par définition) !
Que veux-tu dire ?


____________________
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 déc. 2011 à 22:19
0
Merci
En mettant un messagebox de "load" dans l'évènement Load, de "Paint" dans l'évènement Paint, etc ... (pour tous les évènements de ton Form) ===>> tu constateras dans quel ordre ils interviennent


____________________
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
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 21 déc. 2011 à 22:26
0
Merci
Bonsoir Ucfoutu

Je pensais aussi
mais quand je lance l'application
l'évenement paint intervient avant le load
j'ai mis un point d'arret dans chacun
et c'est le paint qui est arrivé le premier
quand je lance l'application
J'ai réussi à contourner le problème
enfin peut etre il y a une réponse
Commenter la réponse de cs_ShayW
NHenry 14279 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 21 déc. 2011 à 23:25
0
Merci
Bonjour,

Tu peux utiliser un booléen, que tu mets à True une fois le Load passé.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 22 déc. 2011 à 07:08
0
Merci
Pas bon le point d'arret, ou une MsgBox, d'ailleurs

c'est intrusif

le Paint se declenchera alors pour redessiner la Form...


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 22 déc. 2011 à 10:08
0
Merci
Bonjour à tous

les points d'arret c'était pour analyser le problème
j'ai retirer les points d'arret
quand je lance l'application une exception est relevée
Private Sub For1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
'ici l'erreur  
     e.Graphics.DrawImage(image1
    End Sub 


l'erreur est due: image1 n'est pas chargé
je l'ai bien chargé dans l'évenement load de la form mais bizarre l'évenement paint est déclenché en premier
Commenter la réponse de cs_ShayW
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 22 déc. 2011 à 10:18
0
Merci
J'ai :

Partial Class Form1
    Private Image1 As Image = Nothing

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Image1 = Image.FromFile("C:\Documents and Settings\rthomas.BUDAPLAN\Mes documents\Mes images\wallpaper-757058.jpg")
    End Sub

    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        e.Graphics.DrawImage(Image1, 0, 0)
    End Sub
End Class


et ca fonctionne sans heurs...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 22 déc. 2011 à 12:43
0
Merci
Oui je sais
j'ai testé aussi
le load est declenché le premier
donc vraiment bizarre avec ma form
et encore plus bizarre
si je mets la propriété du windows state
à normal tout fonctionne normalement
si je change à maximized le paint est declenché
en premier
donc
j'ai contourné le problème en chargeant l'image
dans le paint
 Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    If image1 Is Nothing Then
                imageleschiffres = Image.FromFile(Application.StartupPath & "\image1.png")
     End If
    e.Graphics.DrawImage(Image1, 0, 0)
    End Sub
Commenter la réponse de cs_ShayW
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 22 déc. 2011 à 13:05
0
Merci
même en ayant ma feuille en Maximized, mon Load passe en premier, heureusement ^^

tu parles bien de changer les propriété en mode Design ?

parce que si tu t'amuses a changer cela dans ton _Load, là, c'est toi qui le déclenche, ton _Paint ...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 22 déc. 2011 à 17:52
0
Merci
J'ai trouvé

en mode design windows state maximize
sur la form ajoute un panel
et backcolor transparent
le code comme tu as écrit
Partial Class Form1
    Private Image1 As Image = Nothing

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Image1 = Image.FromFile("C:\Documents and Settings\rthomas.BUDAPLAN\Mes documents\Mes images\wallpaper-757058.jpg")
    End Sub

    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        e.Graphics.DrawImage(Image1, 0, 0)
    End Sub
End Class


le backcolor transparent du panel cause
le event paint de la form a etre déclenché
avant le load
Commenter la réponse de cs_ShayW

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.