Sélection des numéros de Départements et Nouvelle Région Fr

Rlooping 13 Messages postés lundi 28 novembre 2005Date d'inscription 2 février 2018 Dernière intervention - 1 févr. 2018 à 15:47 - Dernière réponse : Whismeril 11517 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention
- 3 févr. 2018 à 15:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

http://codes-sources.commentcamarche.net/source/102489-selection-des-numeros-de-departements-et-nouvelle-region-fr

Afficher la suite 
Whismeril 11517 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention - 1 févr. 2018 à 18:47
Bonsoir

sur le fond,
il y a du VB6 partout, pense à désactiver la référence à VisualBasic dans tout projet VB.Net


Mettre des accents, des cédilles etc... dans les nom de variables, de fichiers ou de projets est très très déconseillé.
J'ai dézippé ton projet sur un mac et tout était cassé.
Sur un windows pas configuré en français, ça se dézippe, mais Visual Studio ne sait pas compiler, etc...


sur le code
tu as écrit une classe, donc un objet, et tu t'en sers comme une structure.

Le principe de l'objet est qu'il gère tout un "thème".
Dans ton cas, un DefDepartement doit savoir comme il s'affiche et la form ne servant que d'interface graphique.
Il doit aussi savoir quelle est son image, etc...

De plus, tu as stocké tes données dans une liste, et tu ne te sers pas de ces capacités de recherches pour extraire les régions.
(Soit dit en passant, il aurait pu être plus logique de faire une liste de Régions, qui contient une Liste de Départements)

Enfin, tu ne profites pas du binding.

Pour te montrer, j'ai traité l'affichage dans la classe, et j'ai fait une requête pour extraire les régions et j'ai bindé les 2 listes aux contrôles adéquats

La classe devient
    Public Class DefDepartement
        Property Region As String = String.Empty
        Property Numero As String = String.Empty
        Property Departement As String = String.Empty

        ''' <summary>
        ''' Je change le ToString par défaut, par le texte qui me convient, ça fait 3 lignes de codes en plus sans les commentaires
        ''' </summary>
        ''' <returns></returns>
        Public Overrides Function ToString() As String
            Return String.Format("({0}) {1}", Numero.PadLeft(2, "0"), Departement)
        End Function
    End Class


et le load de la form devient
    Private Sub FrmDepartements_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Clear Picture of department
        PictureBox_Dep.Image = Nothing

        'load Xml of list of department
        ModRegion.Load(Path.Combine(Application.StartupPath))

        'affichages des données en 3 lignes seulement
        CheckedListBox_Dep.DataSource = Departments
        Dim regions As List(Of String) = Departments.Select(Function(d) d.Region).ToList()
        CheckedListBox_Region.DataSource = regions
    End Sub


Et je n'ai pas regardé le reste du code, mais il est évident que tu ne profites pas de la programmation objet ni des outils puissants offerts par la framework.
Ton code ressemble à s'y méprendre à du VB6.
Rlooping 13 Messages postés lundi 28 novembre 2005Date d'inscription 2 février 2018 Dernière intervention - 2 févr. 2018 à 10:12
Merci pour ces commentaires. Effectivement, je viens du VB6.
Je suis peut être un peu vieux pour la programmation Objet !!! :-)

Pour la Liste des Régions, elles sont en doublon dans la CheckedListBox_Region !!
Whismeril 11517 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention > Rlooping 13 Messages postés lundi 28 novembre 2005Date d'inscription 2 février 2018 Dernière intervention - 2 févr. 2018 à 10:36
Ça n’est pas uniquement une question d’âge. Il y a des membres ici, qui affichent un âge respectable et s’y sont mis.
Et puis le concept date du début des années 60.
J’ai écrit des articles pour ceux qui passent de vb6 à vb.net
http://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net
Et plus en profondeur
http://codes-sources.commentcamarche.net/faq/11239-la-programmation-objet-appliquee-a-net-par-l-exemple-partie-1-sur-3
Whismeril 11517 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention > Whismeril 11517 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention - 3 févr. 2018 à 15:07
J'ai fait une petite boulette dans le code que je t'ai proposé, il y a des doublons dans les régions.
Voici le code corrigé, tant que j'y étais j'ai trié par ordre alphabétique.
        Dim regions As List(Of String) = Departments.Select(Function(d) d.Region).Distinct().OrderBy(Function(r) r).ToList()
Commenter la réponse de Rlooping

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.