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 :

Clic sur boutons générés (démineur)


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut Clic sur boutons générés (démineur)
    Bonjour,
    Etudiant, je tripote du Vb.net en ce moment. Je suis en train de me faire un petit démineur, et j'ai quelques soucis :

    je génère des boutons de cette manière dans mon terrain :

    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
    Dim xPos As Integer = 20
            Dim yPos As Integer = 44
     
            Randomize()
     
            For i As Integer = 0 To 9
                For j As Integer = 0 To 9
     
                    mybutton(i, j) = New Button
                    mybutton(i, j).Location = New Point(xPos, yPos)
                    mybutton(i, j).Visible = True
                    mybutton(i, j).Size = New Size(40, 40)
                    mybutton(i, j).Cursor = Cursors.Hand
     
                    Me.Controls.Add(mybutton(i, j))
                    xPos += 40 + (40 / 9)
                    If xPos > 455 Then
                        yPos += 40 + (40 / 9)
                        xPos = 20
                    End If
                Next
            Next
    Et mon problème, comment récupérer un clic sur des boutons générés de cette manière ?

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    les tableaux c'est pas conseillé, une collection et des classes c'est beaucoup plus simple à écrire/lire/modifier/débugger, et en plus c'est plus performant

    sinon après avoir fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mybutton(i, j) = New Button
    tu fais
    AddHandler mybutton(i, j).Click, AddressOf SubGestionClickBouton

    addhandler sert à dire je veux que l'event machin de mon instance du type bidule arrive sur telle sub
    removehandler sert à retirer la gestion d'évènement

    il est tout à fait possible de renvoyer le click de tous les bouton sur la meme sub
    le bouton qui déclenche l'évènement est dans sender

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub SubGestionClickBouton (sender as object, e as system.eventargs)
      dim bouton as button = directcast(sender, button)
    end sub
    là aussi l'utilisation d'un tableau est guère pratique, si du dois parcourir ton tableau pour savoir quel bouton est cliqué c'est pas terrible
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    oui, c'est mon problème maintenant, après de nombreuses recherche, j'ai trouvé addHandler. Seulement, je dois conserver l'indice de mon bouton. Celui ci me servira plus tard pour la fonction récursive qui fera ce traitement : lorsque je clique sur un bouton, empile les appel des bouton autour si pas de bombe proches, et en dépilant, on découvre le plus possible de bouton, et affiche les bombe proche pour les autres.

    Bref, le démineur quoi. Mais pour cela, il faut qu'à partir d'un clic sur un bouton je puisse savoir lequel vient de l'être, pour traiter les avoisinants.

    ça donne quoi à la place de tableau ? Jsuis assez novice en vb.net et je débarque du C pur (sans plus ou dièse derrière). Le vb.net c'est mon premier langage orienté objet

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un cours ici
    http://plasserre.developpez.com/cours/vb-net/
    ca permet d'avancer plus vite

    sinon voir les collections
    et à la place de travailler directement sur tes boutons, il faudrait travailler avec une classe qui a toutes les infos d'une cellule ainsi qu'une référence vers le bouton
    enfin c'est une idée ...

    mais sur .net autant faire de la POO sinon y a vb6, C ou autre ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [VB.NET] Trouver un handle, simuler clic sur bouton
    Par 6su7 dans le forum Windows Forms
    Réponses: 33
    Dernier message: 21/08/2006, 10h38
  2. Désactivation et détection de clic sur bouton radio
    Par Prue dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 21/04/2006, 14h50
  3. charger nouvelle page par clic sur bouton (pas pop-up)
    Par michaelbob dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/09/2005, 17h04
  4. Detection clic sur bouton precedent
    Par shaun_the_sheep dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 20/10/2004, 18h18
  5. Réponses: 9
    Dernier message: 23/02/2004, 20h14

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