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

Windows Forms Discussion :

[VB.NET] Associer une action a bcp d'objets ....


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 30
    Points
    30
    Par défaut [VB.NET] Associer une action a bcp d'objets ....
    [VB.NET] Voila le probleme....

    J'ai dans ma forme environ 40 txtbox qui lance une fonction avec juste un parametre (le numero de la textbox)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub hist0_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hist0.TextChanged
            calcul_hist_change(0)
        End Sub
     
    Private Sub hist1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hist1.TextChanged
            calcul_hist_change(1)
        End Sub

    Est il possible de faire un truc du style..... (attention débutant... )
    Ce n'est qu'un exemple, je n'ai aucune idee de la syntaxe que cela pourrait avoir!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub {hist0,hist1,hist2......hist39}_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hist0.TextChanged
            calcul_hist_change(0..ou.1...2....39)
        End Sub

    voila...... pas taper!!

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essaye de mettre à chaque fois cet evenement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((TextBox)sender).Text

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    je vois bien ce que tu veux dire . j'ai déja rencontré ce genre de besoin.

    voici une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Private Sub MaProcedure(ByVal sender As System.Object, ByVal e As System.EventArgs)
          calcul_hist_change( CType(sender, TextBox).TabIndex)
        End Sub
    Ensuite dans ta Form tu fais pointer toutes les TextBox sur la procédure.
    De cette façon:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim i As Integer
            Dim text As TextBox
            For i = 0 To Me.Controls.Count - 1
                If TypeOf Me.Controls(i) Is TextBox Then
                    text = Me.Controls(i)
                    AddHandler text.TextChanged, AddressOf MaProcedure
                End If
            Next
        End Sub
    Ne pas oublier d'initialiser correctement les TabIndex de tes TextBox, pour éviter les confusions.

  4. #4
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Ca se règle en quelques minutes avec l'héritage...Tu n'as qu'à créer ton propre contrôle qui hérite de textbox...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Public Class MyTextBox
    Inherits TextBox
     
    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    Me.calcul_hist_change()
    MyBase.OnTextChanged(e)
    End Sub
     
    Private Sub calcul_hist_change()
     
    End Sub
    End Class
    et si tu as besoin de savoir quel contrôle à déclanché la procédure, c'est pas beaucoup plus compliqué, à toi de voir quelle information est la plus utile (nom du contrôle ou autre)


    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Public Class MyTextBox
    Inherits TextBox
     
    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    Me.calcul_hist_change(Me)
    MyBase.OnTextChanged(e)
    End Sub
     
    Private Sub calcul_hist_change(ByVal tb As MyTextBox)
    End Sub
    End Class
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 30
    Points
    30
    Par défaut OUla...
    Bon ben j'men vais essayer tout ca.... manifestement cela a l'air possible...

    Je vous tient au courant.. merci

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Mouais,, faire un héritage pour ca, je sais pas vraiment si ca en vaut la peine...

  7. #7
    Membre actif
    Avatar de toubib
    Homme Profil pro
    Médecin, developpeur
    Inscrit en
    Août 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Médecin, developpeur
    Secteur : Santé

    Informations forums :
    Inscription : Août 2004
    Messages : 104
    Points : 298
    Points
    298
    Par défaut
    Autre solution classique:

    On donne comme Handles de la Sub tous les histx.TextChanged.
    On teste le sender pour voir quel contrôle a déclenché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub HistoTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hist0.TextChanged, hist1.TextChanged, hist2.TextChanged, hist3.TextChanged...  
    if sender Is hist0 then     
    calcul_hist_change(0) 
    end if
    if sender Is hist1 then     
    calcul_hist_change(1) 
    end if
     
    ...
    End Sub

  8. #8
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    J'aurais fait comme toubib

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 30
    Points
    30
    Par défaut Genial....
    J'ai appris deux choses geniales... debutant oblige!!

    On peut creer ses propres controles....

    et il est possible d'attribuer un sub a plusieurs controls...


    Avec ca je devrais pouvoir faire bcp bcp de choses....de quoi m'occuper au moins une semaine...

    Et aussi reduire mon code d'au moins 700 lignes.. c'est pas une blague

    Un petit pas pour vous... mais un grand pour moi..

    Encore merci bcp

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 30
    Points
    30
    Par défaut Et voila.....
    700 lignes en moins plus tard.... toutes mes textbox et autres controls reunis en 3 ou 4..... le pied!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub histoTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hist0.TextChanged, hist1.TextChanged, hist2.TextChanged, ......, hist16.TextChanged
     
            calcul_hist_change(sender.AccessibleName)
     
        End Sub
    Je ne savais pas trop ou mettre ma variable, alors j'ai utilise le champ .AccessibleName ... j'espere ne pas avoir fait de boulette.. mais pour l'instant cela marche nickel!!!

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

Discussions similaires

  1. [VB.NET] Associer une clé aux éléments d'une combo
    Par Cereal123 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/03/2009, 14h52
  2. [1.x] Comment associé une action au gabarit principal layout.php
    Par rockybalboa dans le forum Symfony
    Réponses: 3
    Dernier message: 04/07/2008, 16h37
  3. Associer une action a l'ouverture de l'index
    Par piotrr dans le forum Struts 2
    Réponses: 10
    Dernier message: 17/05/2008, 11h19
  4. Réponses: 2
    Dernier message: 04/12/2006, 09h32
  5. associer une action a un jcombobox
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 04/08/2006, 10h59

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