Hello,
Je te livre de nouveaux quelques remarques suite à ta nouvelle version.
Tu as du remarquer que ton application "freezée" encore un peu pendant les chargements ("analyse de fichier" par exemple). Pour solutionner ce problème, dans la fonction BW_AnalayseImport_ProgressChanged, remplace :
Me.MaProgressBar.Value = num
par :
Me.Invoke(New MethodInvoker(Function() Me.MaProgressBar.Value = num))
En fait, toutes les mises à jour d'interface graphique effectuée depuis ton BackgroundWorker doivent être écrite de cette façon pour un chargement le plus fluide possible.
A noter que j'ai regardé un peu le code pour certains détails. Et de là, j'ai été plus que surpris par ça (fonction BW_AnalyseTraduction_DoWork(sender, e)):
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(0)))
If flag Then
dataRow(0) = ""
End If
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(1)))
If flag Then
dataRow(1) = ""
End If
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(2)))
If flag Then
dataRow(2) = ""
End If
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(3)))
If flag Then
dataRow(3) = ""
End If
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(4)))
If flag Then
dataRow(4) = ""
End If
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(5)))
If flag Then
dataRow(5) = ""
End If
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(6)))
If flag Then
dataRow(6) = ""
End If
que tu peux remplacer de façon bien plus propre par ceci :
For i = 0 To 6
flag = Information.IsDBNull(RuntimeHelpers.GetObjectValue(dataRow(i)))
If flag Then
dataRow(i) = String.Empty
End If
Next
D'ailleurs, petit conseil pour le dev en .Net : il vaut mieux utiliser String.Empty plutôt que "" : ça évite une nouvelle allocation de mémoire. Ca fait une petite économie de mémoire pas difficile à avoir.
Concernant l'interface, juste un petit détail : les "bandeaux" en haut de chaque onglet sont redimenssionables en hauteur. Ne voyant pas l'utilité de redimenssionner ces zones, ne serait-il pas judicieux de "fixer" ces zones ? (y a une propriétés pour ça sur les SplitContainer de mémoire).
Quand on souhaite analyser un fichier et que l'on fournit un mauvais fichier, il ne se passe simplement rien. Tu devrais afficher un message pour avertir l'utilisateur que son fichier n'est pas bon, sinon certains pourraient ne pas comprendre ^^ (le top du top serait d'activer ou non le bouton en fonction de la validité du champs texte, mais je chipote
)
Voilà, ce sont les premières impressions que j'ai eu. J'espère que cela pourras t'être utile, sachant que je laisse encore une fois le côté pratique aux traducteurs.
Beau boulot et bonne chance à toi