IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Action après le chargement du formulaire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Octobre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Octobre 2020
    Messages : 15
    Par défaut Action après le chargement du formulaire
    Bonjour,

    Je souhaite réaliser les opérations suivantes :
    - Charger le formulaire avec message d'attente ;
    - Opération de synchronisation (longue) ;
    - Chargement du formulaire d'identification.

    J'ai donc introduit la mise en forme du formulaire dans le "Load" puis les deux opérations suivantes dans le "Shown".

    Cependant, la mise en forme du formulaire et le message d'attente n'apparait qu'après la réalisation des opérations du "Shown".
    J'ai essayé en passant par une autre forme dédiée : "Ecran de démarrage" mais j'ai le même problème.

    Auriez-vous une idée d'où vient le problème ou une solution pour réaliser les actions décrites précédemment ?

    Mon code est le suivant :

    Celui de la form principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Imports System.Threading
     
    Public Class Form_Principale
     
        ''' <summary>
        ''' Action lors du chargement du formulaire principale
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        Private Sub Form_Principale_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            'Vérification des prérequis de logiciel et de version
            Verification_Logiciel_Version()
     
            'Mise en forme de la page du logiciel
            With Me
                .Text = Application.ProductName 'nomme la feuille
                .BackColor = Couleur_Clair 'Couleur de fond blanc
                .Font = Police_Titre 'police
                .AutoScaleMode = AutoScaleMode.None 'Mise o l'échelle du formulaire en fonction de la résolution
                .AutoScroll = False 'Bar de défilement automatqiue
                .Icon = My.Resources.iconeGxTIS 'Ajoute l'icone
                .WindowState = FormWindowState.Maximized 'Ouvre le fenetre en grand
                .MinimumSize = New Size(800, 400) 'Taille minimu
                .DoubleBuffered = True 'Le double buffering permet de réduire le scintillement lors du dessin en mémoire avant d'afficher à l'écran. Activez-le pour les formulaires ou les contrôles personnalisés.
            End With
     
            'Met en forme la page d'accueil
            Formulaire_Chargement(Me)
     
        End Sub
     
        ''' <summary>
        ''' Action après l'affichage du formulaire principale
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        Private Sub Form_Principale_Shown(sender As Object, e As EventArgs) Handles Me.Shown
     
            Thread.Sleep(10000) 'Simulation activité longue
     
            'Création des dossier et de la base de données locales
            Fonction_Importation_Données_Serveur()
     
            'Connection à labase de donnée locale
            Connection_BDD(fichier_BDD_Local, Mot_De_Passe_BDD, ObjetConnection_BDD_Local)
     
            'Récupère les paramètres du logiciel
            Recuperation_Parametres()
     
            'Lance la synchronisation des données
            'Dim Tache_Syncrhonisation As Task = Task.Run(Sub() Syncrhonisation_Donnees())
     
            'Vérification de la dernière syncrhonisation
            Verification_Syncrhonisation()
     
            'Supprime le formulaire Chargement
            Suppression_Control(Me, "Panel_Formulaire_Chargement")
     
            'Charge le formulaire de connexion
            Formulaire_Connexion(Me)
     
            'Ajoute la barre d'information
            Barre_Information(Me)
     
        End Sub
     
    End Class
    Celui de la génération du formulaire de démarrage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    Imports System.Reflection
    Imports System.Threading
     
    Module Module_Formulaire_Chargement
        'Module de mise en forme de la page d'accueil
     
        ''' <summary>
        ''' Met en forme le formulaire d'accueil
        ''' </summary>
        ''' <param name="maForme"></param>
        Sub Formulaire_Chargement(ByVal maForme As Form)
     
    #Region "Déclare les élements"
     
            'Ajoute un panel
            Dim Panel_Formulaire_Chargement As New Panel 'Initie un nouveau panel pour le formulaire de chargement
            With Panel_Formulaire_Chargement 'Paramètre le Panel
                .Name = "Panel_Formulaire_Chargement" 'Nome le panel
                .Dock = DockStyle.Fill 'Occupe toute la place
            End With
     
            'Ajoute un Tableau
            Dim TLP_Formulaire_Chargement As New TableLayoutPanel 'Initie un nouveau panel pour le formulaire de chargement
            With TLP_Formulaire_Chargement 'Paramètre le Panel
                .Name = "TLP_Formulaire_Chargement" 'Nome le panel
                .ColumnCount = 2 'Insert colonne
                .RowCount = 3 'Insert lignes
                .Dock = DockStyle.Fill 'Prise de la plae
                '.Location = New Point((maForme.ClientSize.Width - TLP_Formulaire_Chargement.Width) \ 2, (maForme.ClientSize.Height - TLP_Formulaire_Chargement.Height) \ 2) 'Place le formulaire au centre
                .MinimumSize = New Size(650, 200) 'Taille minimum
     
                'Déini les styles de colonnes
                .ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 100)) ' % de la largeur totale
                .ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 100))  ' % de la largeur totale
     
                'Défini les styles de lignes
                .RowStyles.Add(New RowStyle(SizeType.Percent, 100))  ' % de la hauteur totale
                .RowStyles.Add(New RowStyle(SizeType.Absolute, 200))  ' Hauteur en absolue
                .RowStyles.Add(New RowStyle(SizeType.Percent, 100))  ' % de la hauteur totale
            End With
     
            'Ajoute le logo
            Dim Logo As New PictureBox
            With Logo 'Paramètre le logo
                .Image = My.Resources.Logo 'Défini l'image
                .SizeMode = PictureBoxSizeMode.Zoom 'Ajustage au contenu
                .Dock = DockStyle.Fill 'Prend toute la place
                .Size = New Size(350, 200)
                .Dock = DockStyle.Right
            End With
     
            'Ajout pannel pour cellule Ligne 0 / Colonne 1
            Dim Panel_Label_Software As New Panel
            With Panel_Label_Software
                .Name = "Panel_Label_Software" 'Nom
                .Dock = DockStyle.Fill 'Place
            End With
     
            'Ajoute le texte d'initialisation
            Dim Label_Initialisation As New Label
            With Label_Initialisation
                .Name = "Label_Initialisation" 'Nom
                .Text = "Software initialization GxTIS"
                .Font = Police_Titre 'Police
                .Dock = DockStyle.Bottom 'Collé à droite
                .AutoSize = True 'Ajustage automatique
            End With
     
            'Ajoute la version
            Dim Label_Version As New Label
            With Label_Version
                .Name = "Label_Version" 'Nom
                .Text = "Version " & Assembly.GetExecutingAssembly().GetName().Version.ToString
                .Font = Police_Corp 'Police
                .Dock = DockStyle.Bottom 'Collé à droite
                .AutoSize = True 'Ajustage automatique
            End With
     
            'Ajoute d'espace
            Dim Label_Espace As New Label
            With Label_Espace
                .Name = "Label_Espace" 'Nom
                .Font = Police_Corp 'Police
                .Dock = DockStyle.Bottom 'Collé à droite
                .AutoSize = True 'Ajustage automatique
            End With
     
            'Ajoute le reférence by "TIS"
            Dim Label_ByTIS As New Label
            With Label_ByTIS
                .Name = "Label_ByTIS" 'Nom
                .Text = "By TIS"
                .Font = Police_Corp 'Police
                .Dock = DockStyle.Bottom 'Collé à droite
                .AutoSize = True 'Ajustage automatique
            End With
     
            'Ajoute la référence "By yok"
            Dim Label_Byyok As New Label
            With Label_Byyok
                .Name = "Label_Byyok" 'Nom
                .Text = "By yok" 'Texte
                .Font = Police_stylisé 'Police
                .Dock = DockStyle.Bottom 'Collé à droite
                .AutoSize = True 'Ajustage automatique
            End With
     
    #End Region
     
    #Region "Ajoute les élements"
     
            Panel_Label_Software.Controls.Add(Label_Initialisation) 'Ajout la référence
            Panel_Label_Software.Controls.Add(Label_Version) 'Ajout la référence
            Panel_Label_Software.Controls.Add(Label_Espace) 'Ajout la référence
            Panel_Label_Software.Controls.Add(Label_ByTIS) 'Ajout la référence
            Panel_Label_Software.Controls.Add(Label_Byyok) 'Ajout la référence
     
            'Ajout des éléments dans le tableau
            TLP_Formulaire_Chargement.Controls.Add(Logo, 0, 1) 'Ajout le picture box en ligne 0 et colonne 0
            TLP_Formulaire_Chargement.Controls.Add(Panel_Label_Software, 1, 1) 'Ajout la référence en ligne 0 et colonne 1
     
            Panel_Formulaire_Chargement.Controls.Add(TLP_Formulaire_Chargement) 'Ahoute le Tableau
            maForme.Controls.Add(Panel_Formulaire_Chargement) 'Ajoute le panel à la forme
     
    #End Region
     
    #Region "Mise en forme Label_Initialisation"
     
            Dim Tache_Modification_Variable_Label_ByTIS As New Thread(Sub() Variation_Label_Initialisation(Label_Initialisation)) With {.IsBackground = True} 'Déclare le thread
            Tache_Modification_Variable_Label_ByTIS.Start() 'Lance l'action
     
    #End Region
     
        End Sub
     
        ''' <summary>
        ''' Fonction de variation dun label by TIS
        ''' </summary>
        ''' <param name="Label_Initialisation">Reference au label a faire varier</param>
        Sub Variation_Label_Initialisation(ByVal Label_Initialisation As Label)
     
            Dim Label_Base As String = Label_Initialisation.Text 'Défini le texte de base
     
            While Label_Initialisation IsNot Nothing 'Boucle infinie
     
                If Verification_Existance_Control(Label_Initialisation) Then 'Si le label existe
                    Label_Initialisation.BeginInvoke(New Action(Sub() Label_Initialisation.Text = Label_Base)) 'Remet à 0
                End If
     
                Thread.Sleep(1000) 'Pause de 1 seconde
     
                For i = 0 To 2 'Ajoute trois fois les points
     
                    If Verification_Existance_Control(Label_Initialisation) Then 'Si le label existe
                        Label_Initialisation.BeginInvoke(New Action(Sub() Label_Initialisation.Text &= "."))  'Ajout du point
                        Thread.Sleep(1000) 'Pause de 1 seconde
                    End If
     
                Next
     
            End While
     
        End Sub
     
    End Module
    Je vous remercie par avance

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Tu peux utiliser un BackgroundWorker pour ton écran de démarrage.
    L'idée sous jacente est d'utiliser un Thread.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Octobre 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Octobre 2020
    Messages : 15
    Par défaut
    Citation Envoyé par popo Voir le message
    Tu peux utiliser un BackgroundWorker pour ton écran de démarrage.
    L'idée sous jacente est d'utiliser un Thread.
    Ca a fonctionné ! Je vous remercie beaucoup.

    J'ai eu un peu de difficulté avec le multi threading mais cela fonctionne bien.
    Pour ceux que le le rendu intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    Imports System.IO
    Imports System.ComponentModel
     
    Public Class Form_Principale
     
        Private WithEvents BackGround_Worker As New BackgroundWorker() 'Variable pour lancer les opérations en arrière plan
     
        ''' <summary>
        ''' Action lors du chargement du formulaire principale
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        Private Sub Form_Principale_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            'Vérification des prérequis de logiciel et de version
            Verification_Logiciel_Version()
     
            'Mise en forme de la page du logiciel
            With Me
                .Text = Application.ProductName 'nomme la feuille
                .BackColor = Couleur_Clair 'Couleur de fond blanc
                .Font = Police_Titre 'police
                .AutoScaleMode = AutoScaleMode.None 'Mise o l'échelle du formulaire en fonction de la résolution
                .AutoScroll = False 'Bar de défilement automatqiue
                .Icon = My.Resources.iconeGxTIS 'Ajoute l'icone
                .WindowState = FormWindowState.Maximized 'Ouvre le fenetre en grand
                .MinimumSize = New Size(800, 400) 'Taille minimu
                .DoubleBuffered = True 'Le double buffering permet de réduire le scintillement lors du dessin en mémoire avant d'afficher à l'écran. Activez-le pour les formulaires ou les contrôles personnalisés.
            End With
     
            'Met en forme la page d'accueil
            Formulaire_Chargement(Me)
     
        End Sub
     
        ''' <summary>
        ''' Action après l'affichage du formulaire principale
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        Private Sub Form_Principale_Shown(sender As Object, e As EventArgs) Handles Me.Shown
     
            BackGround_Worker.RunWorkerAsync() 'Lance la tache en arrière plan
     
        End Sub
     
        ''' <summary>
        ''' Tache arrière plan au chargement
        ''' </summary>
        ''' <param name="sender">BackGrand</param>
        ''' <param name="e">Evenement</param>
        Private Sub BackGround_Worker_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackGround_Worker.DoWork
     
            'Création des dossier et de la base de données locales
            Fonction_Importation_Données_Serveur()
     
            'Connection à labase de donnée locale
            Connection_BDD(fichier_BDD_Local, Mot_De_Passe_BDD, ObjetConnection_BDD_Local)
     
            'Récupère les paramètres du logiciel
            Recuperation_Parametres()
     
            'Lance la synchronisation des données
            Dim Tache_Syncrhonisation As Task = Task.Run(Sub() Syncrhonisation_Donnees())
     
            'Vérification de la dernière syncrhonisation
            Verification_Syncrhonisation()
     
            'Vérification version
            Verfication_Version_GxTIS()
     
    #Region "Supprime le formulaire Chargement"
     
            Dim found_Control() As Control = Me.Controls.Find("Panel_Formulaire_Chargement", True) 'Cherche les controls avec le nom
     
            If found_Control.Length > 0 Then 'Si control trouvé
     
                Dim Control_A_Supprimer As Control = found_Control(0) 'Défini le control
                Control_A_Supprimer.BeginInvoke(New Action(Sub() Control_A_Supprimer.Dispose())) 'Supprime le control
            End If
     
    #End Region
     
            'Charge le formulaire de connexion
            Formulaire_Connexion(Me)
     
            'Ajoute la barre d'information
            Barre_Information(Me)
     
        End Sub
     
    End Class
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Annuler action après OnClick dans un formulaire
    Par Casio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2019, 21h23
  2. Déclencher une action après le chargement complet de la carte
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 18/05/2018, 13h49
  3. Redirection vers une Action après envoi d'un formulaire
    Par muad'dib dans le forum Struts 2
    Réponses: 4
    Dernier message: 05/06/2009, 14h48
  4. action après le chargement d'un gif
    Par cijez dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/10/2008, 14h59
  5. Action après le chargement
    Par michaeljeru dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/06/2008, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo