Besoin d'aide pour optimisation

cs_Selig Messages postés 31 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 10 mars 2009 - 24 nov. 2007 à 13:44
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 25 nov. 2007 à 10:40
Bonjour j'aimerais bien optimisé une partie de mon code mais je ne sais pas comment


Private Sub ButtonCouleur8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCouleur8.Click


        ColorDialog1.ShowDialog()


        While ColorDialog1.Color = PictureBoxCouleur1.BackColor OrElse _

              ColorDialog1.Color = PictureBoxCouleur2.BackColor OrElse _

              ColorDialog1.Color = PictureBoxCouleur3.BackColor OrElse _

              ColorDialog1.Color = PictureBoxCouleur4.BackColor OrElse _

              ColorDialog1.Color = PictureBoxCouleur5.BackColor OrElse _

              ColorDialog1.Color = PictureBoxCouleur6.BackColor OrElse _

              ColorDialog1.Color = PictureBoxCouleur7.BackColor


            MsgBox("Cette couleur a déjà été choisie par un autre joueur.", MsgBoxStyle.Exclamation)

            ColorDialog1.ShowDialog()

        End While


        PictureBoxCouleur8.BackColor = ColorDialog1.Color


    End Sub


J'utilise 8 Boutons de ce genre à la seule différence que le picturebox
associé n'est pas le même et que si par exemple c'est le bouton 8 qui
appelle la procédure il faut enelever le picturebox8 correspondant


J'ai 8 boutons donc 8fois ce code dans ma form c'est pas génial ^^ y a-t-il une solution?


J'avais pense une faire une sub et à l'associer aux 8 évenement click
des boutons mais je ne sais pas comment faire pour savoir quel
événement à appeler la sub


Merci d'avance, ++

6 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
24 nov. 2007 à 15:02
Je ne connais pas .Net, mais j'imagine que tu peux créer des groupes de contrôles, donc qui utilisent un Index
ButtonCouleur(5) plutôt que ButtonCouleur5

Tu n'aurais donc qu'une seule procédure Click et tu n'aurais qu'à gérer l'Index du contrôle qui a été pesé. Éventuellement, tu pourrais créer une Function à laquelle tu passes en paramètre l'Index du bouton et autres détails qui serviraient à faire tes vérifications.

MPi²
0
cs_Selig Messages postés 31 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 10 mars 2009
24 nov. 2007 à 15:27
J'ai +- saisi ce que tu voulais me dire mais comment savoir quel bouton à appeler la procédure ??

Car suivant le bouton appelant, la picturebox associéé ne sera pas la même
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
24 nov. 2007 à 17:42
Salut ,

Je viens de bidouiller un truc en VB6, mais je ne sais pas ce que cela peut donner en .net, à essayer....lol

Private Sub Button_Click()


     ' Affichage de la boite couleur
      ColorDialog1.ShowDialog()
    
       ' Appel sub et attent résultat
        If TestColor(ColorDialog1.Color) Then
           TaPictureBox.BackColor = ColorDialog1.Color
        Else
           MsgBox("Cette couleur a déjà été choisie par un autre joueur.", MsgBoxStyle.Exclamation)
           ColorDialog1.ShowDialog()
        End If


End Sub




Private Function TestColor(MyColorTest As Long) As Boolean
 
  ' Déclaration
  Dim Ctrl As Control
 
 ' Cherche dans le Formulaire les picturebox
 ' pour pouvoir  testé la couleur
  For Each Ctrl In TonFormulaire
 
      If TypeOf Ctrl Is PictureBox Then
     
         ' Test couleur
          If MyColorTest = Ctrl.BackColor Then
           
            ' test faux
             TestColor = False
            
            ' on sort
             Exit Function
            
          End If
        
      End If
     
  Next Ctrl
           
 ' Libération
  Set Ctrl = Nothing
            
 ' Si aucune couleur est pareille que celle de
 ' ColorDialog1.Color, renvoie True
  TestColor = True
 


End Function


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
24 nov. 2007 à 18:39
Rectif...

Private Sub Button_Click()
     ' Affichage de la boite couleur
      ColorDialog1.ShowDialog()
    
       ' Appel sub et attent résultat
        If TestColor(ColorDialog1.Color) Then
           TaPictureBox.BackColor = ColorDialog1.Color
        Else
           MsgBox("Cette couleur a déjà été choisie par un autre joueur.", MsgBoxStyle.Exclamation)
           <strike>ColorDialog1.ShowDialog()</strike>
        End If

End Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
24 nov. 2007 à 18:49
Bonsoir,

Il me semble, surtout qu'il s'agit à ce que je vois d'un jeu et de couleurs choisies par les joueurs,que la démarche n'est pas vraiment bonne (il serait totalement impossible, par exemple, de distinguer, en RGB, la couleur 0,0,0 de
la couleur 0,0,1, pourtant différentes ..


Le mieux serait à mon avis de procéder par un tableau de longs représentant les couleurs possibles et d'éliminer du


tableau la couleur choisie par un joueur.

A chaque choix : présentation des couleurs restant disponibles, sous forme de ce que l'on veut (labels, images, picturebox,...) avec son long associé (dans la propriété tag, par exemple)..
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2007 à 10:40
salut à tous,

dans l'ordre :
*pas de groupe en .net
*le format .Color étant du OLE_COLOR, 0,0,0 sera bien reconnu différemment que 0,0,1

et le code demandé, beh il faut cumuler ta méthode et la proposition de jmfmarques (tableau)
comme on ne sait pas ce qui a changé entre temps, forcément il faudra re-créer le tableau à chaque fois
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous