OUverture form ralentie par des combobox

Résolu
collargol123 Messages postés 86 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 avril 2014 - 24 déc. 2013 à 00:33
collargol123 Messages postés 86 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 avril 2014 - 30 déc. 2013 à 00:04
Bonjour,

A l'ouverture d'une form, je charge des fichiers text dans des combobox, en appelant des procédures dans load

En VB6 aucun problème, ma form s'affichait instantanément avec toutes les cb chargées.

En VBNet il faut environ 5 secondes avant que ma form apparaissent avec les combobox chargées.

Auriez-vous une explication et une solution pour y remédier ?

merci

6 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
Modifié par cs_Robert33 le 24/12/2013 à 06:43
Bonjour

Il faudrait voir le code de la fonction Load pour une tentative d'explication.
une solution consisterait à charger les ComboBox dans un thread séparé.

Bob.
C# is amazing, enjoy it!
0
Bonjour,

La visibilité de l'objet ralenti son chargement !


Option Explicit On
Public Class Form1

Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Long
ComboBox1.Visible = False
For i = 1 to ?
ComboBox1.Items.Add(ta data)
Next i
End Sub

Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
ComboBox1.Visible = True
End Sub
End Class

Cordialement, Joe.
0
collargol123 Messages postés 86 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 avril 2014
25 déc. 2013 à 16:43
Bonjour,

J'ai essayé :
Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
mais Me.Shown ou mybase.shown n'est pas accepté.

Voici le code :
Dans le load, j'appelle 9 procédures pour alimenter mes combobox :
loadlistbox (cb1,chemin)

puis je resize ma form

Voici le code de la procédure qui charge les combobox :
Public Sub LoadListBox(ByRef oLst As System.Windows.Forms.ComboBox, ByVal sPath As String)

On Error GoTo biii


'Dim file As System.IO.File
Dim reader As System.IO.StreamReader
Dim line As String

If Not File.Exists(sPath) Then
Exit Sub
End If

reader = File.OpenText(sPath)
'now loop through each line
While reader.Peek <> -1
line = reader.ReadLine()
oLst.Items.Add(line)

End While

'close your reader
reader.Close()
biii:
End Sub

merci
0
Suite,

Ce n'est pas normal que Show ne soit pas accepté.

Combien as-tu d'enregistrements et de quelle taille globale (taille fichier) ?

Car si tu as par exemple 30.000 enregistrements de 50 octets par ligne, ça va quand même prendre 1/2 seconde par combo...

Tu dis que tu appelles 9 procédures pour alimenter tes combo, ça veut dire que tu as 9 combo alimentés par 9 fichiers, ça peut faire pas mal si tes fichiers son gros... Ici aussi, peut être peux-tu mieux regrouper les datas = moins d'ouverture de fichiers ?

On t'as proposé de tout charger en même temps, si jamais tu n'y arrives pas, tu peux toujours m'envoyer le code que je vois si je peux faire quelque chose (montmartre75018 (free), si tu as vb2012, sinon MAJ.

Cordialement, Joe.
0
Suite,

La procédure évènementielle "Form1_Shown" ne doit pas être écrite par toi mais générée par le gestionnaire de procédures.


Public Sub LoadListBox(ByRef oLst As System.Windows.Forms.ComboBox, ByVal sPath As String)
Try
Dim reader As System.IO.StreamReader
Dim line As String
reader = File.OpenText(sPath)
While reader.Peek <> -1
oLst.Items.Add(reader.ReadLine() )
End While
reader.Close()
Catch ex As Exception
MsgBox("ERREUR : " & err.number & vblf & err.description)
End Try
End Sub

Cordialement, Joe.
0

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

Posez votre question
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
26 déc. 2013 à 08:24
Bonjour

As-tu essayé de charger les ComboBox d'un seul coup ?



Private Sub LoadListBox(oLst As ComboBox, sPath As String)

        Try
            oLst.Items.AddRange(File.ReadAllLines(sPath))
        Catch ex As Exception

        End Try

    End Sub

0
collargol123 Messages postés 86 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 avril 2014
30 déc. 2013 à 00:04
J'ai tenté ce qui est écrit ci-dessus.
J'ai fait la mise à jour vb express 2010 et cela fonctionne.
Va t'en savoir ....
0
Rejoignez-nous