Executer un code a L'ouverture de ma form (a l'execution de mon programme)

Signaler
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010
-
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010
-
Salut tout le monde,
je souhaitait savoir comment programmer ma Form ( dans mon cas Form1) pour qu'elle exécute un code un fois qu'elle est ouverte. Etant donné que je n'ai pas de seconde Form cella reviens à exécuter le code de la Form dés l'exécution du programme (.exe). Je ne souhaite pas cliquer sur un bouton, tout doit être automatique.

Merci a vous tous

Kosen

"les murs ont peux etre des oreilles, mais pas toujours des yeux" proverbe de Go

14 réponses

Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

J'ai oublier de dire que je code sous Visual studio 2005
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
le event Form1_Load ne convient pas?
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

Tu le positionne comment
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        demarage()
    End Sub



Théoriquement sa devrai partir a l'ouverture de la Form, ce qui n'est pas le cas :(
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

la procedure "demarage" est :

Sub demarage()

        Dim g As Graphics
        Dim GrayBrush As New SolidBrush(Color.Gray)
        decalage_x = 20
        decalage_y = 20
        g = Me.PictureBox1.CreateGraphics
        g.FillRectangle(GrayBrush, 0, 0, decalage_x, Me.PictureBox1.Height)
        g.DrawLine(Pens.Black, decalage_x - 10, decalage_y, Me.PictureBox1.Width, decalage_y)
        g.DrawLine(Pens.Black, decalage_x, decalage_y - 10, decalage_x, Me.PictureBox1.Height)

    End Sub 'procedure de demarage => creation de l'image de fonds
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

Apres un debug detaillé la procedure est lue mais en fin de course je n'ai rien dans ma picture box.

Il me semble que:
g = Me.PictureBox1.CreateGraphics

N'est pas pris en compte
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Je ne suis pas sûr que le comportement en .Net soit le même que sous VB6 (donc à vérifier) :

Lors de l'exécution de Form_Load, les objets graphiques ne sont pas encore chargés, donc ne sont pas influencés par le code.
Voir si tu as un Form_Activate ou un truc du genre.

De toute façon, la meilleure façon de lancer un programme consiste à créer une Sub Main qui va s'occuper de charger la forme :
    Dim maForme As Form1
    Load maForme   ' Form_Load s'exécute
    ' Maintenant, je peux toucher aux objets
    Call Demarrage()
    maForme.Show   ' Affichage

A tester, donc.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

Je teste et te dis tout ^^
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
34
En fait, Jack c'est pas tout à fait ca.

> KosenItatchi

En .Net lors ce que l'on dessine dans un contrôle via la méthode CreateGraphics, le dessin disparait au dès que le refresh de la form s'effectue. Il y a donc deux solution :

1\Placer le dessin dans une bitmap :

Dim BG As New Bitmap(300, 400)
Dim G As Graphics = Graphics.FromImage(BG)

G.FillRectangle(Brushes.AntiqueWhite, New Rectangle(0, 0, 300, 400))
Me.BackgroundImage = BG


Et définir cette bitmap comme étant le fond de notre contrôle..

2\Dessiner directement sur le contrôle mais placer le code dans l'événement Paint

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
 
e.Graphics.FillRectangle(Brushes.AntiqueWhite, New Rectangle(0, 0, 300, 400))

End Sub



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

Merci Mayzz ^^,

Si j'ai bien compris ton post, les deux methodes que tu nous expose permettent de "fixer" une image, puis de dessiner dessus et conserver les changements.

Du type je trace une courbe1, je recharge et je trace une seconde courbe2 ce qui aura pour aspect final la superposition finale des deux courbes sur la picture box.
Est ce bien cela ?

Peux tu me dire s'il existe un moyen pour charger mon image (ici un repère d'axe ) dés le chargement de la Form, et s'il existe comment le réaliser .

Merci a tous
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Merci Mayzz
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
34
Pas de quoi, on est là pour ca non ?

KosenItatchi>

Si tu cherche à faire un graphique, ll y a la librairie ZGraph gratuite en .Net, tu te casseras moins la tête.

Néanmoins, si tu cherche à améliorer tes compétences et que tu désire dessiner ton propre graph alors :

Crée un UserControl sur lequel tu dessineras ton graphique, en ce qui concerne mes méthodes, la première consiste à créer une image et l'insérer comme on le ferait avec paint ou Photoshop et l'insertion via l'IDE de VS/VB.

Il te faudra donc plutôt utiliser la seconde, en réalité tu devra stocker les valeurs de tes axes dans des variables (rendues accessible publiquement par les propriétés de ton contrôle) et placer ton code de dessin dans l'événement paint ou en "Overridant" la procédure OnPaint.

Chaque fois que Windows actualisera ton formulaire, le programme appellera la méthode OnPaint du formulaire et le graphique sera paint sur le contrôle, c'est la solution idéale, la plus propre.

Si tu cherche des exemples pour le GDI+ en .Net, regarde ici, c'est une de mes sources, mais c'est un peu le cafouillis, ca n'a rien à voir avec les graphiques mais tu devrais y trouver ton bonheur au niveau des méthodes. Sinon je pense qu'il doit y avoir de meilleurs exemples en tapant graphique dans le moteur de recherche pour les sources .Net


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
218
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
17 mars 2012

Salut à tous,

parfois il vaut mieux utiliser la méthode "new" à la place de "load".

en plus avec vb.net en tapant "public sub new( -les arguments ou pas...-) puis enter" le code InitializeComponent() s'écrit automatiquenment. après cette méthode tous les composants existent et on on peut lancer la procédure que l'on veut exécuter au démarrage.

en plus si on veut lancer ce formulaire à partir d'un autre (on va dire form "maitre") on pourra en faire apparaitre plusieurs ( bien sur il faut alors créer l'objet puis le montrer
"dim a as monform
a = new monform(monmaitre) 'pour pouvoir renvoyer des infos)
a.show")
Messages postés
9
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
30 mai 2010

Salut a tous mes pour vos réponses ^^.

Malheureusement suite a mes exams et au fait que Visual Studio plante, je n'aurais pas le temps de develloper sous peu .

Merci a vous tous en tous cas .

Amicalement

Kosen


"les murs ont peux etre des oreilles, mais pas toujours des yeux" proverbe de Go