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 :

Eviter doublons de valeurs d'une variable de structure dans une classe


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut Eviter doublons de valeurs d'une variable de structure dans une classe
    Bonjour,
    Bon je crois que mon titre n'est vraiment pas explicite, mais là je ne savais vraiment pas comment résumer ça (ouvert à toute suggestion de modification bien entendu)

    Voici mon problème :

    J'ai d'une part une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Public Class TTypesJeux
     
            Public Structure TypeJeu
                Dim Name As String
                Dim Mains() As String
                Dim TDefault As Boolean
            End Structure
     
            Public Types() As TypeJeu
     
        End Class
    Puis dans une Form le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public MesTypesJeux As New TTypesJeux
    ReDim MesTypesJeux.Types(3)
    '... attibution de valeurs ...
    je souhaiterais que lorsque je fais ceci (par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MesTypesJeux.Types(0).TDefault = True
    Que tous les autres TDefault de la collection passent à False (Types(1).TDefault , Types(2).TDefault ...). En bref, un seul doit avoir sa propriété TDefault à True.

    Or je ne sais ni ou ni comment intégrer cette vérification dans ma classe ou dans ma structure

    Est-il possible d'intégrer une procédure/fonction à la structure qui vérifie tous les objets de ma collection ?

    Merci pour toute aide
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  2. #2
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Bonjour,

    Essaie ça:

    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
        Public Class TTypesJeux
     
            Public Structure TypeJeu
                Dim Name As String
                Dim Mains() As String
                Dim TDefault As Boolean
            End Structure
     
            Public Types() As TypeJeu
     
            Public WriteOnly Property TDefaults
                Set(value)
                    For Each t As TypeJeu In Types
                        t.TDefault = value
                    Next
                End Set
            End Property
     
        End Class

  3. #3
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut
    peut etre ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub initjeu(ByVal n As Integer)
            For iter = 0 To MesTypesJeux.Types.Length - 1
                If iter = n Then
                    MesTypesJeux.Types(iter).TDefault = True
                Else
                    MesTypesJeux.Types(iter).TDefault = False
                End If
            Next
        End Sub

  4. #4
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Tout d'abord merci pour vos réponse,
    Malheureusement cela ne convient pas
    -N4w4k- le code que tu m'as proposé fait que tous les TDefault ont la même valeurs.

    shayw je souhaite intégrer cette "fonctionnalité" à ma classe et non pas dans mon Form. De la même façon que, pour un radiobutton, lorsque l'on passe la propriété Checked d'un radiobutton a True, tous les autres du groupe passent automatiquement à False.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    si le but est de savoir qu'un seul est marqué comme ca, plutot que d'avoir un booléen par instance avec true dans celui qui est marqué, tu peux avoir un variable shared as TypeJeu qui contient celui qui est marqué

    sinon les structures, et les tableaux avec redim il faut éviter
    le mieux est une classe et une collection
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Alors, j'ai transformé ma Structure en class.
    Que veux-tu dire par "collection" ?

    Sinon je pense avoir trouvé une solution, peut-être pas la plus jolie mais elle a l'air de fonctionner :
    Dans le property set, je déclenche un évènement, intercepté par la classe TTypesJeux qui lance une procédure de vérification.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  7. #7
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    pourquoi pas initialiser avec le constructor
    aussi le fait d'écrire redim dans ta form c'est plutot dans ta class

    ex
    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
      Public Class ClassTTypesJeux
        Public Structure TypeJeu
            Dim Name As String
            Dim Mains() As String
            Dim TDefault As Boolean
        End Structure
     
        Public Types() As TypeJeu
        Private Sub initjeu(ByVal n As Integer)
            For iter = 0 To Types.Length - 1
                If iter = n Then
                    Types(iter).TDefault = True
                Else
                    Types(iter).TDefault = False
                End If
            Next
        End Sub
     
        Public Sub New(ByVal taille As Int32, ByVal defaut As Int32)
            ReDim Types(taille)
            initjeu(defaut)
        End Sub
    End Class
    dans ta form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim ttt As ClassTTypesJeux
            ttt = New ClassTTypesJeux(3, 0)

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/01/2015, 23h57
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. Réponses: 3
    Dernier message: 19/03/2009, 15h49
  4. Réponses: 3
    Dernier message: 06/09/2006, 09h06
  5. Mettre la valeur d'un bouton d'option dans une variable
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 01/03/2006, 10h00

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