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

KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010 - 26 mai 2010 à 17:26
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010 - 30 mai 2010 à 01:39
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

KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
26 mai 2010 à 17:32
J'ai oublier de dire que je code sous Visual studio 2005
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 mai 2010 à 17:41
Salut
le event Form1_Load ne convient pas?
0
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
26 mai 2010 à 17:55
Tu le positionne comment
0
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
26 mai 2010 à 17:59
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 :(
0

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

Posez votre question
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
26 mai 2010 à 18:03
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
0
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
26 mai 2010 à 18:11
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mai 2010 à 19:54
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)
0
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
26 mai 2010 à 21:19
Je teste et te dis tout ^^
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
26 mai 2010 à 21:36
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.
0
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
27 mai 2010 à 00:15
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 mai 2010 à 00:23
Merci Mayzz
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 mai 2010 à 01:45
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.
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
27 mai 2010 à 10:02
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")
0
KosenItatchi Messages postés 9 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 30 mai 2010
30 mai 2010 à 01:39
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
0
Rejoignez-nous