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

Signaler
Messages postés
13
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
2 février 2018
-
Messages postés
16053
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juin 2021
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

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

Messages postés
16053
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juin 2021
551
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()
Messages postés
16053
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juin 2021
551
Ç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
Messages postés
13
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
2 février 2018

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 !!
Messages postés
16053
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juin 2021
551
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.