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 :

Remonter evenement d'un tableau de classes


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 69
    Points
    69
    Par défaut Remonter evenement d'un tableau de classes
    Bonjour

    Je programme sous Vb express 2010

    J'ai developé un programme qui fait de l'affichage graphique qui est realisé en GDI+, et qui fonctionne tres bien. Je vais simplifier l'explication a l'extrème, car mon problème est tres simple :

    Il y a la definition d'une classe qui s'appelle ClassDessin
    Dans le programme principale on declare un tableau de cette classe ( dont le nombre evolue souvent) : Public Dessins(nbObjets) as classdessin.

    Je voudrais maintenant remonter au programm principale des informations, quand des evenements se produisent dans la classe.
    Si ça serait une instance simple d'une classe, je sais comment declarer des evenements, et commant les gerer.

    Mais avec un tableau de classes, on ne peut pas declarer des eventements ??

    Comment remonter une info ( cad declencher un qque chose du genre SubTraitementEvenements(pListeParams) dans le programm principal )?

    merci de vos lumières

    Armin

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Bonjour,

    Pourquoi ne pas vous créer une classe "ClassDessinListe" qui implémente IList(Of ClassDessin) dans laquelle vous ajoutez des événements?

    Cordialement.

    PS: Pour tester mes dires, j'ai fait ç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
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    Public Class Form1
     
        Dim DessinClassList As New TabClassDessin
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            For i As Integer = 0 To 10
                Dim CD As New ClasDessin
                CD.BlaBla = "Classe " & i
                DessinClassList.Add(CD)
            Next
        End Sub
     
    End Class
     
    Public Class ClasDessin
        Property BlaBla As String
    End Class
     
    Public Class TabClassDessin
        Implements IList(Of ClasDessin)
     
        Private lst As New List(Of ClasDessin)
     
        Public Sub Add(item As ClasDessin) Implements ICollection(Of ClasDessin).Add
            lst.Add(item)
            RaiseEvent ItemAdded()
        End Sub
     
        Public Sub Clear() Implements ICollection(Of ClasDessin).Clear
            lst.Clear()
        End Sub
     
        Public Function Contains(item As ClasDessin) As Boolean Implements ICollection(Of ClasDessin).Contains
            Return lst.Contains(item)
        End Function
     
        Public Sub CopyTo(array() As ClasDessin, arrayIndex As Integer) Implements ICollection(Of ClasDessin).CopyTo
            lst.CopyTo(array, arrayIndex)
        End Sub
     
        Public ReadOnly Property Count As Integer Implements ICollection(Of ClasDessin).Count
            Get
                Return lst.Count
            End Get
        End Property
     
        Public ReadOnly Property IsReadOnly As Boolean Implements ICollection(Of ClasDessin).IsReadOnly
            Get
                Return False
            End Get
        End Property
     
        Public Function Remove(item As ClasDessin) As Boolean Implements ICollection(Of ClasDessin).Remove
            Return lst.Remove(item)
        End Function
     
        Public Function GetEnumerator() As IEnumerator(Of ClasDessin) Implements IEnumerable(Of ClasDessin).GetEnumerator
            Return lst.GetEnumerator()
        End Function
     
        Public Function IndexOf(item As ClasDessin) As Integer Implements IList(Of ClasDessin).IndexOf
            Return lst.IndexOf(item)
        End Function
     
        Public Sub Insert(index As Integer, item As ClasDessin) Implements IList(Of ClasDessin).Insert
            lst.Insert(index, item)
        End Sub
     
        Default Public Property Item(index As Integer) As ClasDessin Implements IList(Of ClasDessin).Item
            Get
                Return lst.Item(index)
            End Get
            Set(value As ClasDessin)
                lst.Item(index) = value
            End Set
        End Property
     
        Public Sub RemoveAt(index As Integer) Implements IList(Of ClasDessin).RemoveAt
            lst.RemoveAt(index)
        End Sub
     
        Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator
            Return lst.GetEnumerator()
        End Function
     
        Event ItemAdded()
     
        Public Sub ItemAjouté() Handles Me.ItemAdded
            MessageBox.Show("Item ajouté")
        End Sub
    End Class

  3. #3
    Membre du Club
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 69
    Points
    69
    Par défaut on y est presque
    Merci

    Je ne connaissait pas ce type de liste, c'est genial, ça va beaucoup me servir.

    Mais pour revenir a mon souci : la problematique était commant remonter un event de la classe classedessin jusqu'au formulaire, et non pas de la classe classtabdessin.

    Je ne vois pas encore exactement commant faire.

    C'est aussi possible avec un event ?

    merci d'avance

    Armin

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Bonjour,
    Vous pouvez regarder les deux exemples de MSDN sur Event, je pense que le premier exemple peux vous servir.

    Cordialement.

  5. #5
    Membre du Club
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 69
    Points
    69
    Par défaut comment trouver ça
    Salut

    desolé, question un peu idiot : comment trouver ces exemples ?

    Armin

  6. #6
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Event MSDN VBNET

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Citation Envoyé par armin Voir le message
    Si ça serait une instance simple d'une classe, je sais comment declarer des evenements, et commant les gerer.
    La classe TabClassDessin présenté par Rainui est équivalent à ce que tu appeles une classe simple.
    Citation Envoyé par armin Voir le message
    Mais pour revenir a mon souci : la problematique était commant remonter un event de la classe classedessin jusqu'au formulaire, et non pas de la classe classtabdessin.

    Je ne vois pas encore exactement commant faire.

    C'est aussi possible avec un event ?
    Vu ce que tu as indiqué dans ton post1, normalement tu sais faire.

    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
    Public Class TabClassDessin
        Implements IList(Of ClasDessin)
     
        Public Event EventclsDessin(s As String)
        Private lst As New List(Of ClasDessin)
     
        Public Sub Add(item As ClasDessin) Implements ICollection(Of ClasDessin).Add
            lst.Add(item)
            RaiseEvent EventclsDessin(item.BlaBla & " ajouté")
        End Sub
     
        Public Sub Insert(index As Integer, item As ClasDessin) Implements IList(Of ClasDessin).Insert
            lst.Insert(index, item)
            RaiseEvent EventclsDessin(item.BlaBla & " inséré en position " & index)
        End Sub
     
        Public Sub RemoveAt(index As Integer) Implements IList(Of ClasDessin).RemoveAt
            RaiseEvent EventclsDessin(Me.Item(index).BlaBla & " supprimé")
            lst.RemoveAt(index)
        End Sub
    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
    Public Class frmIList
     
        Dim DessinClassList As New TabClassDessin
        Dim HistoriqueEvent As System.Text.StringBuilder = New System.Text.StringBuilder
     
        Private Sub frmIList_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim CD As ClasDessin
     
            AddHandler DessinClassList.EventclsDessin, AddressOf Me.fonctionAExecuter
     
            For i As Integer = 0 To 10
                CD = New ClasDessin
                CD.BlaBla = "Classe " & i
                DessinClassList.Add(CD)
            Next
     
            DessinClassList.RemoveAt(8)
     
            CD = New ClasDessin
            CD.BlaBla = "Classe insert"
            DessinClassList.Insert(5, CD)
     
            MessageBox.Show(HistoriqueEvent.ToString)
        End Sub
     
        Sub fonctionAExecuter(s As String)
            HistoriqueEvent.AppendLine(s)
        End Sub
     
    End Class

  8. #8
    Membre du Club
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 69
    Points
    69
    Par défaut et voila la solution
    Bonjour,

    super, j'ai compris.

    dans le cas d'un tableau, il faut seulement indiquer pour chaque element du tableau quel sub gère le remonté de l'eventement, et le tour est joué.

    le truc qui me manquait était : AddHandler Obj.Ev_Event, AddressOf EventHandler

    merci de votre aide

    Armin

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

Discussions similaires

  1. accesseur tableau de class A dans une class B
    Par dropsoil dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/05/2009, 21h06
  2. C# Evenement sur un tableau de boutons
    Par Scribeus dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/08/2006, 19h57
  3. Réponses: 5
    Dernier message: 11/05/2006, 14h15
  4. Suppression d'un tableau de classe de la memoire
    Par jhary07 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 14/11/2005, 08h23
  5. tabeau de classe = tableau de classe
    Par Bason_sensei dans le forum C++
    Réponses: 25
    Dernier message: 12/10/2005, 13h01

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