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 :

Comment créer une collection d'objets logiques ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut Comment créer une collection d'objets logiques ?
    Bonjour,

    Je cherche à créer une collection d'objets logiques (button(3)), je sais créer logiquement, je sais créer une collection, mais la liaison des deux, j'avoues que je suis dépassé, je n'ai jamais fait ! Voici le code, comme susdit le but est de créer une collection en trois exemplaires d'un objet Button b(3), suivront les questions ...

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    Option Explicit On
    Public Class Form1
     
     Dim WithEvents b As New Collection()
     
    Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     b.Add(Me.b(1))
     b.Add(Me.b(2))
     b.Add(Me.b(3))
     
     Controls.AddRange(New System.Windows.Forms.Control() {b(3)})
     '
     Dim i As Integer
     b(1).top = 10
     b(2).top = b(1).top + 30
     b(3).top = b(2).top + 30
     b(1).text = "gris Vertical"
     b(2).text = "gris Horizontal"
     b(3).text = "rouge Vertical"
     For i = 1 To 3
      b(i).sizable = True
      b(i).left = 10
     Next i
     '
     Me.Left = 10
     Me.Top = Me.Left
     Me.Width = 450
     Me.Height = 300
    End Sub
     
     
     
    Sub b_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b(1).click, b(2).Click, b(3).Click
     
     bouton(3) = b(3)
     
    End Sub
    End Class
    Questions

    -1- Déja la déclaration logique, je ne sais pas où, ni même s'il faut y mettre un index b(3), et encore moins si on peut associer WithEvents avec Collection() ?

    Dim WithEvents b As New Collection()

    -2- Ensuite, sur Controls.AddRange il plante, refusant l'indice, j'ai aussi mis dans la liste de la collection "b.Add(...)", sans même savoir si c'est utile, et quelque que soit l'ordre de ces deux déclarations n'y change rien ?

    -3- Reste in fine la procédure du click (b.click), je ne sais pas si c'est ainsi dans ce cas, en plus à la fin, le rajout des 3 objets logiques est refusé (b(1).click, ... je ne sais comment faire ?

    Ben ça fait trois question, le mieux serait peut être de recopier le texte et de le lancer sur votre ordinateur, tout étant logique, ainsi on voit mieux les solution éventuelles ...

    Merci, cordialement.
    .

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour he joe
    voici ton code un peu corrige mais faut t'entrainer c.à.d repeter ,beaucoup apres on s'habitue.....
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    Option Explicit On
    Public Class Form1
        'cet'objet logique et raisonnable est un bouton et
        ' il a des evenements ce bon bouton on lui rajoute withevents
        Dim WithEvents b As Button
        'on le mets dans une collection ou une liste de bouton c'est mieux
        Dim listeBoutons As List(Of Button) = New List(Of Button)
     
        Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'tiens je veux en creer trois 
            'parbleu mais ces informaticiens qui ont la facheuse manie de numeroter 
            'à partir de 0 au lieu de 1
            For j As Integer = 0 To 2
                'de un
                Me.b = New Button
                'je le stocke dans collection tiens
                Me.listeBoutons.Add(b)
            Next
     
            'tiens comment les placer?Ah je vais les sortir de la collection 
            Me.listeBoutons.Item(0).Top = 10
            Me.listeBoutons.Item(0).Text = "gris Vertical"
     
            Me.listeBoutons.Item(1).Top = Me.listeBoutons.Item(0).Top + 30
            Me.listeBoutons.Item(1).Text = "gris Horizontal"
     
            Me.listeBoutons.Item(2).Top = Me.listeBoutons.Item(1).Top + 30
            Me.listeBoutons.Item(2).Text = "rouge Vertical"
            'parbleu mais on commence toujours à zero.
            'apres une annee je comprends plus pourquoi il y a des gens qui savent pas 
            'le faire.l'habitude est une seconde nature.
            For i As Integer = 0 To 2
                Me.listeBoutons.Item(i).AutoSize = True
                Me.listeBoutons.Item(i).Left = 10
            Next i
     
            Me.Left = 10
            Me.Top = Me.Left
            Me.Width = 450
            Me.Height = 300
            'pointes vous à cette "poingnee"(handler) dont l' addresse 
            's' appelle b_click quand vous etes clique
            AddHandler Me.listeBoutons.Item(0).Click, AddressOf b_Click
            AddHandler Me.listeBoutons.Item(1).Click, AddressOf b_Click
            AddHandler Me.listeBoutons.Item(2).Click, AddressOf b_Click
     
            'Apres avoir astiques les boutons et qu'ils sont bien prepares 
            'on les ajoutes au Form
            For Each objBouton In listeBoutons
                Me.Controls.Add(objBouton)
            Next
     
        End Sub
        Private Sub b_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            'on s'assure que l'envoyeur d'evenement est bien un "button"
            'et on le convertit en type "button"
            Dim btn As Button = CType(sender, Button)
            MessageBox.Show("vous avec clique le bouton ..." & btn.Text)
        End Sub
     
    End Class
    bon code....

  3. #3
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut Réponse à Mabrouki
    Bonjour Mabrouki,

    Merci beaucoup de ton exemple qui est très bien écrit et fonctionne à la perfection, reste plus qu'à le comprendre

    Alors, je sais bien qu'on part de 0 en informatique (enfin, en théorie), point de confusion dans mon esprit à ce niveau, mais ça me perturbe, pour moi en arithmétique le "0" il est neutre, alors je n'aime pas prendre "0" comme positif ; toutefois il y a plein d'exception en plus : une collection part à 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim monObj As New Collection()
    Un objet part à 1, et comme les variables indicées se définissent de 0 à x et non pas x, ben ça permet de partir à 1 et de rester dans sa déclaration, moi ça me fait toujours bizarre de déclarer par exemple x(2) et de pouvoir en mettre 3

    Encore merci, remarquable !

    Cordialement.

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut collection,liste,indice 0
    bonjour
    sache simplement pour te mettre à jour que Collection est un residu de l'ancien Visual Basic 6 et VBA.
    Dans vb.net tous les indices partent à zero.Tableau,liste,dictionnaire et autres Generics Lists.
    A bon entendeur ...
    bon code...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/04/2012, 16h29
  2. Réponses: 5
    Dernier message: 05/11/2010, 17h39
  3. Réponses: 10
    Dernier message: 26/03/2008, 22h37
  4. Comment créer une collection d'objet ?
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 11/09/2006, 10h48

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