Select Case et Button

Résolu
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 22 août 2009 à 08:59
cs_baz187rem Messages postés 78 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 21 juin 2010 - 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
A voir également:

6 réponses

MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
23 août 2009 à 15:26
euh pourquoi ne pas utiliser les evenement des click?
button1_click
'code1
end sub
button2_click
'code2
end sub
ect...
3
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
23 août 2009 à 15:55
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
0
cs_baz187rem Messages postés 78 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 21 juin 2010 1
9 sept. 2009 à 17:27
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

....
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
10 sept. 2009 à 10:57
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_baz187rem Messages postés 78 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 21 juin 2010 1
16 sept. 2009 à 15:46
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
0
cs_baz187rem Messages postés 78 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 21 juin 2010 1
16 sept. 2009 à 16:22
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
0
Rejoignez-nous