Select Case et Button [Résolu]

cs_JLuc01 208 Messages postés samedi 17 janvier 2009Date d'inscription 5 mars 2013 Dernière intervention - 22 août 2009 à 08:59 - Dernière réponse : cs_baz187rem 78 Messages postés vendredi 23 mars 2007Date d'inscription 21 juin 2010 Dernière intervention
- 16 sept. 2009 à 16:22
Bonjour tout le monde,

Je voudrais savoir s'il est possible de faire quelquechose comme ci-dessous dans un module VBnet:

Public sub Titre()
Select Case
Case Button1
Case Button2 ...
End Select
'General code pour tout les boutons concernes
End sub

Sachant que les differents boutons sont sur la forme principale.

Le but est d'avoir une seule subroutine pour plusieurs boutons au lieu d'une subroutine pour chaque bouton.

Premierement, est-ce possible? Et si oui comment? Pas besoin d'un code complet, mais une piste, une idee...
Deuxiemement, est-ce la meilleure facon de faire?

En esperant avoir ete assez clair, merci d'avance pour toutes suggestions.

JLuc01
Afficher la suite 

6 réponses

Répondre au sujet
MiharbiDoNo 150 Messages postés dimanche 17 mai 2009Date d'inscription 25 mai 2012 Dernière intervention - 23 août 2009 à 15:26
+3
Utile
euh pourquoi ne pas utiliser les evenement des click?
button1_click
'code1
end sub
button2_click
'code2
end sub
ect...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MiharbiDoNo
cs_JLuc01 208 Messages postés samedi 17 janvier 2009Date d'inscription 5 mars 2013 Dernière intervention - 23 août 2009 à 15:55
0
Utile
Oui, c'est surement ce que je vais faire.

En fait, je pensais utiliser un parametre des evenements button1_click, button2_click... et traiter l'ensemble dans une subroutine, mais c'est peut-etre idiot.

Merci encore pour cette reponse (surtout sur une question assez vague).


JLuc01
Commenter la réponse de cs_JLuc01
cs_baz187rem 78 Messages postés vendredi 23 mars 2007Date d'inscription 21 juin 2010 Dernière intervention - 9 sept. 2009 à 17:27
0
Utile
Autre solution ,
a l'init de ta form tu fais des addhandler de ton click de bouton vers une sub commune et dedans en fonction du sender tu fait ton select case

....
Commenter la réponse de cs_baz187rem
cs_JLuc01 208 Messages postés samedi 17 janvier 2009Date d'inscription 5 mars 2013 Dernière intervention - 10 sept. 2009 à 10:57
0
Utile
Salut baz187rem,

Premierement, j'ai utilise l'evenement des clicks des buttons et cela marche.

MAIS, j'ai trouve cette suggestion tres interessante. Le seul probleme, c'est que je ne comprends pas tres bien comment faire. Et, a cause de cela, j'ai plein d'autres questions, malgre MSDN. Il faut avoue que je ne suis pas un expert en VBnet.

Voila un debut de ce que j'ai essaye avec mes interrogations.

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call Test()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Call Test()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler Button1.Click, AddressOf Test
        AddHandler Button2.Click, AddressOf Test
    End Sub

    'Question: A-t-on besoin de "Button1.Click" a la fin de "Private Sub Button1_Click..."
    'quand on ajoute dans "Form1_Load" the AddHandler?

End Class


Le code de mon module est encore pire, car je ne sais pas vraiment quoi mettre apres Select Case...

Module Module1

    Public Sub Test()
        Select Case sender '??
            Case Button1
            Case Button2
        End Select
        'General code pour tout les boutons concernes 
    End Sub

End Module


Oui, c'est vraiment pas genial.
Mais si tu as une idee pour me diriger dans la bonne direction ou un debut de code a essayer de comprendre, ce serait parfait pour moi.

Merci d'avoir repondu toutefois.
Je vais essayer de trouver plus d'exemples avec AddHandler pour comprendre

JLuc01
Commenter la réponse de cs_JLuc01
cs_baz187rem 78 Messages postés vendredi 23 mars 2007Date d'inscription 21 juin 2010 Dernière intervention - 16 sept. 2009 à 15:46
0
Utile
Désolé pour le retard a tes questions...
en ce qui concerne le code suivant, tu peux le supprimer !!! Il ne sert a rien car ton code va dépendre du addhandler et du addressof que tu fais dans ton init.
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call Test()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Call Test()
    End Sub


'Question: A-t-on besoin de "Button1.Click" a la fin de "Private Sub Button1_Click..." : oui

'quand on ajoute dans "Form1_Load" the AddHandler? : quand tu veux

'Le code de mon module est encore pire, car je ne sais pas vraiment quoi mettre apres Select Case...' Tu peux ne rien mettre si tu veux... Tout dépend de ce que tu veux faire si c'est juste en fonction du bouton sur lequel tu viends de cliquer dans ton select case tu met ton code ex

Public Sub Test(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select Case sender 
            Case Button1
                msgbox "Le bouton 1 a été cliqué !"
            Case Button2
                msgbox "Le bouton 2 a été cliqué !"
        End Select

        msgbox "Peut importe le bouton cliqué la msgbox apparaitra avec cette phrase."

    End Sub


Je reprends donc depuis le début

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        AddHandler Button1.Click, AddressOf Test

        AddHandler Button2.Click, AddressOf Test

  End Sub


puis

[code=vb]
Public Sub Test(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select Case sender 
            Case Button1
                msgbox "Le bouton 1 a été cliqué !"
            Case Button2
                msgbox "Le bouton 2 a été cliqué !"
        End Select

        msgbox "Peut importe le bouton cliqué la msgbox apparaitra avec cette phrase."

    End Sub


ca devrait donc marché...
/code
Commenter la réponse de cs_baz187rem
cs_baz187rem 78 Messages postés vendredi 23 mars 2007Date d'inscription 21 juin 2010 Dernière intervention - 16 sept. 2009 à 16:22
0
Utile
Voici un exemple fait pour vérifier... J'ai créer sur une feuille 4 bouton nommés Button3, Button4, Button5, Button6.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'initAddhandler
    AddHandler Button3.Click, AddressOf Me.ClickTest
    AddHandler Button4.Click, AddressOf Me.ClickTest
    AddHandler Button5.Click, AddressOf Me.ClickTest
    AddHandler Button6.Click, AddressOf Me.ClickTest

  End Sub

  Public Sub ClickTest(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Select Case sender.name

      Case "Button3"
        MsgBox("Le bouton 3 a été cliqué !!")

      Case "Button4"
        MsgBox("Le bouton 4 a été cliqué !!")

      Case "Button5"
        MsgBox("Le bouton 5 a été cliqué !!")

      Case "Button6"
        MsgBox("Le bouton 6 a été cliqué !!")

    End Select

    MsgBox("Peut importe le bouton le message s'affiche !!")
  End Sub
Commenter la réponse de cs_baz187rem

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.