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 :

Mutualiser du code sur des événements de contrôles


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Par défaut Mutualiser du code sur des événements de contrôles
    Bonjour,

    J'ai un projet sous VB 2012.
    Je dois reproduire un TabPage d'une Form1 dans une autre Form2. Ce TabPage contient des contrôles standards comme des ComboBox ou ListBox.
    La Form1 contient pas mal de code pour gérer tous ces contrôles.

    Etant donné que je compte donner les mêmes noms aux différents contrôles sur les 2 Forms, est-il possible de mutualiser le code actuellement présent dans Form1 sans devoir créer une fonction pour chaque événement de chaque contrôle ?
    Si oui, comment faire ?

    Merci de votre aide.

  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

    De quoi s'agit-il au juste ?
    La mutuelle des risques du code ou quoi ?
    Si ton code est bien structure ,le code de gestion des évents peut être mis dans un class public à part ,et il suffit que les différents Forms ait une référence sur une instance de ce class et ses méthodes ....

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Par défaut
    Je voudrais réutiliser le code gérant les contrôles (comme la sélection dans une Combo) dans plusieurs Forms.

    Pour l'instant, le code est dans une Form. Il faudrait donc que je créé une Class avec les différents événements que je veux gérer ?
    Dans cette Class, à la place de l'événement, je crée une fonction avec comme paramètre une ComboBox.
    Dans les Forms, à la place de chaque code présent dans les événements des contrôles, je fais appel aux différentes fonctions de la Class.
    Est-ce ce genre de choses que je dois faire ?

  4. #4
    Membre Expert
    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
    Billets dans le blog
    7
    Par défaut
    bonjour,

    si ton code gerant les controles se situe dans form1 et que tu dois le reutiliser ailleurs alors cela veut dire que ton projet est un poil mal ficelé .......
    Pour eviter d etre confronté a ce genre de problème on scinde le projet dans le meilleur des cas : en 3 parties (vue/modèle/controlleur) ou au pire en 2 parties (vue/modèle).
    breff.... je ne te dirais pas de repenser ton projet car à tes yeux cela sonnerait comme de la contre-productivité et de la perte de temps....
    Donc abordes les notions :

    - classe partagée
    - heritage eventuellement
    - interface (si tu possèdes un minima de classes bien structurées....)

    @+

  5. #5
    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

    Une autre hypothèse c'est de faire de l'héritage de Form car tu laisses entendre que tu as des contrôles à dupliquer y compris leur code gestionnaire d'évènement ,
    Une autre solution à ce besoin consiste :
    1/ à créer un FormBase dérivé de l'actuel mais débarrassé des contrôles non communs ainsi que leur code gestionnaire d'évent
    2/ faire hériter ton Form actuel ainsi que les subséquents de ce Form de Base
    3/ rajouter autant de contrôles supplémentaires spécifiques à chacun d'eux...


    exemple
    1/FormBase avec ses contrôles (+ gestionnaires évents)
    2/ FormDeriveB,FormDeriveB
    3/Comment déclarer des évent Handler overridable et les modifier dans ces 2 derniers formes

    code .vb:
    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
     
    Public Class FormBase
     
        Private Sub FormBase_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            For i As Integer = 1 To 10
                ComboBox1.Items.Add("Item" + i.ToString)
                ListBox1.Items.Add("Item" + i.ToString)
     
            Next
     
     
     
        End Sub
        'modifie comme overridable :son code sera modifie dans FormDeriveA
        Protected Overridable Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MessageBox.Show("button1 base")
        End Sub
        'idem:   :son code sera modifie dans FormDeriveA  et  FormDeriveB
        Protected Overridable Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            MessageBox.Show(ComboBox1.SelectedItem.ToString)
        End Sub
     
     
     
    End Class
     
    'form herité A
    Public Class FormDeriveA
        Protected Overrides Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show("button1 DERIVEA")
        End Sub
        Protected Overrides Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
            MessageBox.Show(ComboBox1.SelectedIndex.ToString)
        End Sub
     
    End Class
     
     
    'form herité  B
    Public Class FormDeriveB
     
        Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
            'MyBase.OnLoad(e)
            ComboBox1.Items.Clear()
            For i As Integer = 1 To 5
                ComboBox1.Items.Add("ItemDerivedB" + i.ToString)
            Next
     
        End Sub
        Protected Overrides Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            ListBox1.Items.Add(ComboBox1.SelectedItem.ToString)
            Label1.Text = ComboBox1.SelectedItem.ToString
        End Sub
    End Class
    Pour hériter il suffit de créer un form et de rajouter ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Public Class Form1
        Inherits FormBase
     
    End Class
    et de generer le projet !!!

  6. #6
    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
    re

    Lien MSDN pour plus ample support (intitulé : Windows Forms Inheritance) :
    https://www.google.dz/url?sa=t&rct=j...39250283,d.d24

Discussions similaires

  1. Comment ajouter du code sur un événement "onbeforeunload"?
    Par Nixar dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2010, 13h13
  2. Réponses: 1
    Dernier message: 18/10/2010, 11h07
  3. Réponses: 1
    Dernier message: 15/11/2008, 19h19
  4. statistiques sur des événements
    Par ram-0000 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 06/06/2008, 11h45
  5. FFT code sur des modèles en finance
    Par Eric06 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 12/06/2007, 23h32

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