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 :

Form indisponible Vb [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut Form indisponible Vb
    Voila quand je lance mon form,Il fait les actions en arriére plan (Il téléchrarge un fichier sans affichez ma form)J'ai déjà essaye Me.show Mais aucun succés voir image & code :
    Il m'affiche sa



    Et dés qu'il ma téléchager et décompresse ma form apparait completement.
    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
    Public Class Form1
     
     
        Public Site2 = ("http://*****/****/")
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Me.Text = "Launcher"
     
            Me.Show()
    repeat: Dim VERIF_VERSION As String = My.Computer.FileSystem.ReadAllText("version.txt")
            Dim versionfile As String = "version.txt"
            If My.Computer.FileSystem.FileExists(versionfile) Then
                My.Computer.FileSystem.DeleteFile(versionfile)
            End If
            My.Computer.Network.DownloadFile(Site2 & versionfile, versionfile)
     
            Dim LastVer As String = My.Computer.FileSystem.ReadAllText(versionfile)
     
            Label.Visible = False
            Label2.Visible = False
            Label1.Visible = False
            Label3.Visible = False
     
            Label4.Visible = False
            If VERIF_VERSION < LastVer Then
     
     
                TabControl.SelectTab(1)
                File.Delete(versionfile)
                Dim t1 As String = VERIF_VERSION + 1
                Dim sw As StreamWriter
                sw = New StreamWriter(versionfile)
                sw.WriteLine(t1)
                sw.Close()
                Label.Visible = True
                Label.Text = (LastVer & "Mise a jour détecter ")
                Label1.Visible = True
                Label1.Text = ("Mise à jour " & t1 & "/" & LastVer)
                My.Computer.Network.DownloadFile(Site2 & t1 & ".zip", t1 & ".zip")
                Label2.Visible = True
                Label2.Text = ("Décompression de l'archives")
                decompression(Application.StartupPath, t1 & ".zip")
                Label3.Visible = True
                Label3.Text = ("Décompresion achever.")
                GoTo repeat
            End If
            If VERIF_VERSION = LastVer Then
                Label4.Visible = True
                Label4.Text = ("Vous pouvez désormais jouez.")
            End If
     
        End Sub
        Public Sub decompression(ByVal destinationDirectory As String, ByVal myzipfile As String)
     
            ' on cree l'entree zip
            Dim zipIStream As ZipInputStream = New ZipInputStream(File.OpenRead(myzipfile))
            Dim theEntry As ZipEntry
     
            ' pour toutes les entrees
            Do While (1)
     
                ' recuperation de l'entree
                theEntry = zipIStream.GetNextEntry()
     
                ' si l'entree vaut nothing => c'est fini
                If theEntry Is Nothing Then Exit Do
     
                ' test si l'entrée est un fichier
                If theEntry.IsFile Then
     
                    ' definition du fichier de sortie
                    Dim myFile As New FileInfo(destinationDirectory & "\" & theEntry.Name)
     
                    ' on crée le(s) répertoire(s) si besoin
                    Directory.CreateDirectory(myFile.DirectoryName)
     
                    ' creation du fichier de sortie
                    Dim fs As FileStream = New FileStream(myFile.FullName, FileMode.Create)
                    Dim size As Integer = 2048
                    Dim data As Byte() = New Byte(size) {}
                    Do Until (size <= 0)
                        size = zipIStream.Read(data, 0, data.Length)
                        fs.Write(data, 0, size)
                    Loop
                    fs.Flush()
                    fs.Close()
                End If
            Loop
     
            ' on ferme le flux
            zipIStream.Close()
     
        End Sub
    End class

  2. #2
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    Bonjour peut être ? Apparemment la politesse n'est pas une priorité pour toi.

  3. #3
    Membre averti
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Points : 391
    Points
    391
    Par défaut
    Bonjour,

    Pour faire simple, et au risque de faire hurler les puristes, l'application se lance de la manière suivante :

    1. Initialiser tout un lot de choses, de façon discrète ;
    2. Charger le formulaire principal (évènement form_load);
    3. Montrer le formulaire principal et attendre une action de l'utilisateur.

    Dans votre code, vous demandez à l'application d'afficher la fenêtre lors de l'étape 2. Sauf que cette fenêtre n'est pas encore prête, à ce moment là. Donc, forcément, rien ne se passe.

  4. #4
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par CLeBeR Voir le message
    Bonjour peut être ? Apparemment la politesse n'est pas une priorité pour toi.
    Merci pour cette remarquer mais cela ne régle en aucun cas mon problèmes.
    Si cela est juste pour augmentez votre compteur de message veuillez vous abstenir.
    Pour faire simple, et au risque de faire hurler les puristes, l'application se lance de la manière suivante :

    1. Initialiser tout un lot de choses, de façon discrète ;
    2. Charger le formulaire principal (évènement form_load);
    3. Montrer le formulaire principal et attendre une action de l'utilisateur.

    Dans votre code, vous demandez à l'application d'afficher la fenêtre lors de l'étape 2. Sauf que cette fenêtre n'est pas encore prête, à ce moment là. Donc, forcément, rien ne se passe
    Merci de l'aide mais a part mettre mon code dans un bouton(ce que j'évite a faire)Je n'arrive pas sans que cela me fassent ça

  5. #5
    Membre averti
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Points : 391
    Points
    391
    Par défaut
    Citation Envoyé par krkodec Voir le message
    Merci de l'aide mais a part mettre mon code dans un bouton(ce que j'évite a faire)Je n'arrive pas sans que cela me fassent ça
    Si la méthode n'est pas bonne, alors il faut en changer.

    Il y a tout un lot de possibilités. L'une d'elles consiste à lancer un BackgroundWorker dans l'évènement "Form_Load" qui n'activera le bouton "jouer" que lorsque les tâches seront accomplies. Pour faire patienter l'utilisateur, la tâche de fond pourra faire avancer un progressbar par exemple.

    Une autre solution est d'utiliser un projet "console", et de n'ouvrir la fenêtre que lorsque toutes les tâches ont été accomplies.

    Etc...

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    bonsoir, avez-vous essayer ceci:

    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
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Me.Text = "Launcher"
     Me.Show()
    Private Sub Form1_LocationChanged(sender As System.Object, e As System.EventArgs) Handles MyBase.LocationChanged
          Dim VERIF_VERSION As String = My.Computer.FileSystem.ReadAllText("version.txt")
            Dim versionfile As String = "version.txt"
            If My.Computer.FileSystem.FileExists(versionfile) Then
                My.Computer.FileSystem.DeleteFile(versionfile)
            End If
            My.Computer.Network.DownloadFile(Site2 & versionfile, versionfile)
     
            Dim LastVer As String = My.Computer.FileSystem.ReadAllText(versionfile)
     
            Label.Visible = False
            Label2.Visible = False
            Label1.Visible = False
            Label3.Visible = False
     
            Label4.Visible = False
            If VERIF_VERSION < LastVer Then
     
     
                TabControl.SelectTab(1)
                File.Delete(versionfile)
                Dim t1 As String = VERIF_VERSION + 1
                Dim sw As StreamWriter
                sw = New StreamWriter(versionfile)
                sw.WriteLine(t1)
                sw.Close()
                Label.Visible = True
                Label.Text = (LastVer & "Mise a jour détecter ")
                Label1.Visible = True
                Label1.Text = ("Mise à jour " & t1 & "/" & LastVer)
                My.Computer.Network.DownloadFile(Site2 & t1 & ".zip", t1 & ".zip")
                Label2.Visible = True
                Label2.Text = ("Décompression de l'archives")
                decompression(Application.StartupPath, t1 & ".zip")
                Label3.Visible = True
                Label3.Text = ("Décompresion achever.")
                GoTo repeat
            End If
            If VERIF_VERSION = LastVer Then
                Label4.Visible = True
                Label4.Text = ("Vous pouvez désormais jouez.")
            End If
     End Sub
    Public Sub decompression(ByVal destinationDirectory As String, ByVal myzipfile As String)
     
            ' on cree l'entree zip
            Dim zipIStream As ZipInputStream = New ZipInputStream(File.OpenRead(myzipfile))
            Dim theEntry As ZipEntry
     
            ' pour toutes les entrees
            Do While (1)
     
                ' recuperation de l'entree
                theEntry = zipIStream.GetNextEntry()
     
                ' si l'entree vaut nothing => c'est fini
                If theEntry Is Nothing Then Exit Do
     
                ' test si l'entrée est un fichier
                If theEntry.IsFile Then
     
                    ' definition du fichier de sortie
                    Dim myFile As New FileInfo(destinationDirectory & "\" & theEntry.Name)
     
                    ' on crée le(s) répertoire(s) si besoin
                    Directory.CreateDirectory(myFile.DirectoryName)
     
                    ' creation du fichier de sortie
                    Dim fs As FileStream = New FileStream(myFile.FullName, FileMode.Create)
                    Dim size As Integer = 2048
                    Dim data As Byte() = New Byte(size) {}
                    Do Until (size <= 0)
                        size = zipIStream.Read(data, 0, data.Length)
                        fs.Write(data, 0, size)
                    Loop
                    fs.Flush()
                    fs.Close()
                End If
            Loop
     
            ' on ferme le flux
            zipIStream.Close()
     
        End Sub
    End class

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonsoir,

    Dans les règles de développez.com il est marqué :
    4.1. Politesse

    Il est toujours plus agréable de lire un message qui commence par un "bonjour" et se termine par un "s'il vous plaît" ou un "merci". De plus, cela encourage nos membres à le lire et à tenter d'y donner une réponse.
    Après, rien en vous oblige à le faire en effet mais c'est vrais que c'est toujours plus agréable.

    Votre réponse, bien que je n'ai pas trouvé de question, se trouve comme l'a dit franticfranz dans la création d'un thread séparé qui ne bloquera pas le thread de la form. Allez donc voir du coté des BackGroundWorker.

    Cordialement.

  8. #8
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par hacker59 Voir le message
    bonsoir, avez-vous essayer ceci:
    Oui est cela ne marche pas.
    Citation Envoyé par franticfranz Voir le message
    Si la méthode n'est pas bonne, alors il faut en changer.

    Il y a tout un lot de possibilités. L'une d'elles consiste à lancer un BackgroundWorker dans l'évènement "Form_Load" qui n'activera le bouton "jouer" que lorsque les tâches seront accomplies. Pour faire patienter l'utilisateur, la tâche de fond pourra faire avancer un progressbar par exemple.

    Une autre solution est d'utiliser un projet "console", et de n'ouvrir la fenêtre que lorsque toutes les tâches ont été accomplies.

    Etc...
    Enfete j'aimerai ceci:
    -Affichez mon form.
    -selectionnez tab control Logs (TabControl1.SelectTab(1) )
    -Affichez le labels de l'action dans mes labels qui sont dans tab logs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Label2.Visible = True
                Label2.Text = ("Décompression de l'archives")
                decompression(Application.StartupPath, t1 & ".zip")
    -Tous ceci sans que mon form se minimise pendant l'une de ces actions.

    J'arrive a tous faire ceci sauf le dernier tiret.
    BackgroundWorker dans l'évènement "Form_Load" qui n'activera le bouton "jouer" que lorsque les tâches seront accomplies.
    Je joue avec button1.visible = true or false.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exemple sur mon code:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    button1.visible = false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Label3.Text = ("Décompresion achever.")
                System.Threading.Thread.Sleep(7000)
                My.Computer.FileSystem.DeleteFile(t1 & ".zip")
    button1.visible = true

  9. #9
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    je me suis renseigné pour le backgroundwork mais je n'arrive pas.
    Je sais pas comment déclarer mes control & autres.

  10. #10
    Membre habitué Avatar de CLeBeR
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    Je vais être sympa et essayer de t'aider, mais à l'avenir sois poli !
    Il faut que tu utilise un thread. Un thread est un bout de code que tu permet d'appeler une fonction ou un sub tout en laissant accessible ton programme.

    Pour l'utiliser c'est pas compliqué, il faut déjà que tu mette les instructions "lourdes" dans un fonction ou un sub (j'ai pris un sub pour l'exemple ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sub MesInstructions()
            'Liste de tes instructions
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim MonThread As New Threading.Thread(AddressOf MesInstructions)
            MonThread.Start()
        End Sub
    Normalement tes instructions ne devraient plus bloquer l'application.

  11. #11
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Merci!
    Résolue

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/08/2012, 14h55
  2. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  3. [SharePoint 2010] Access Forms indisponible
    Par thanos33 dans le forum Configuration
    Réponses: 1
    Dernier message: 21/10/2010, 17h06
  4. Réponses: 7
    Dernier message: 23/03/2006, 12h12
  5. Form principale non visible au demarrage!!!!
    Par toufou dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/07/2002, 21h49

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