Détection d'un click sur une textbox, parmis 64 [Windows FORM/ C#]

Résolu
Plumal Messages postés 16 Date d'inscription jeudi 4 février 2021 Statut Membre Dernière intervention 14 février 2021 - 10 févr. 2021 à 14:16
Plumal Messages postés 16 Date d'inscription jeudi 4 février 2021 Statut Membre Dernière intervention 14 février 2021 - 11 févr. 2021 à 10:56
Bonjour,
Pour l'un de mes projets, je possède 64 Pictures Box.
Je les instancie moi même, mais je souhaiterai savoir, lorsqu'un utilisateur clique sur l'une, la quelle il a cliqué parmis les 64.

Pour cela, lorsque j'instancie une PictureBox, je crée un nouvel event qui renvoi à la méthode ClickPictureBox.

Cependant, je ne vois pas, à part via le calcul de coordonnées, comment savoir que l'utilisateur a cliqué sur la PictureBox de ligne X et de colonne X (j'ai stocké mes PictureBox dans un tableau à deux dimensions, X, Y afin de faire une forme de carré).

Auriez vous une idée ?

Si non, comment récupérer les coordonnées d'où l'utilisateur a cliqué ?

Merci bien

Cordialement,

Plumal

6 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
10 févr. 2021 à 16:47
Bonjour

Dans ton titre tu dis « textbox » et dans le message « pictureBox »
Ça prête à confusion.

La signature de la méthode abonnée à l’événement click doit ressembler à
void maMethode(object sender, EventArgs e)

La variable sender contient l’objet qui a déclenché l’événement, il te suffit de caster en PictureBox pour en faire ce que tu veux.

Par contre, tu as indiqué, dans ton sujet précédent, coder pour un cours. Normalement, quand on passe du mode console au winform, une des premières choses qu’on apprend, c’est la présence de sender dans tous les événements issus des contrôles fournis par Microsoft.
0
Plumal Messages postés 16 Date d'inscription jeudi 4 février 2021 Statut Membre Dernière intervention 14 février 2021
10 févr. 2021 à 21:19
Bonsoir,

En effet, erreur d'inattention je vais modifié cela.

Pour la méthode de l'évenement, ayant fait un peu d'une API Java cet été, je me doutais qu'il s'agissait de quelque chose avec le sender mais lors de mes cours, nous n'avons pas vu cela...

Nous avons eu un professeur qui nous a surtout appris les agrégations, et la représentation UML et très peu de code ... D'où mes lacunes :(

Je vais me renseigner sur si je peux récupérer le PictureBox précise (vu que c'est un tableau) qui a trigger l'évenement.
Merci en tout cas ! Je reviens ici si je trouve pas ^^
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
10 févr. 2021 à 21:29
tu dit
Pour cela, lorsque j'instancie une PictureBox, je crée un nouvel event qui renvoi à la méthode ClickPictureBox.


montre le code
0
Plumal Messages postés 16 Date d'inscription jeudi 4 février 2021 Statut Membre Dernière intervention 14 février 2021
11 févr. 2021 à 08:08
private void InitImagePiece(int iLigne, int iColonne, Image imPiece)
        {
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece = new PictureBox();
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.Parent = this.tabImageCase[iLigne, iColonne].PictureBoxCase;
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.Image = imPiece;
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.BackColor = Color.Transparent;
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.Location = new Point(((this.iSize- imPiece.Width)/2), ((this.iSize - imPiece.Height) / 2));
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.Width = imPiece.Width;
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.Height = imPiece.Height;
            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.BringToFront();

            this.tabImageCase[iLigne, iColonne].bPresencePiece = true;

            this.tabImageCase[iLigne, iColonne].PictureBoxPiece.Click += new System.EventHandler(this.DetectClick);
        }
0

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

Posez votre question
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
11 févr. 2021 à 08:27
Ok,

Maintenant la signature de DetectClick
0
Plumal Messages postés 16 Date d'inscription jeudi 4 février 2021 Statut Membre Dernière intervention 14 février 2021
Modifié le 11 févr. 2021 à 08:37
J'ai pas encore fait les modifs du code donc pour le moment j'ai que ça :

 private void DetectClick(object sender, EventArgs e)
        {
            PictureBox p = (PictureBox)sender;
        }


Le p est temporaire (comme nom de variable, c'était juste un test)
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
11 févr. 2021 à 10:35
Ben voilà, p c’est le pictureBox qui a été cliqué
0
Plumal Messages postés 16 Date d'inscription jeudi 4 février 2021 Statut Membre Dernière intervention 14 février 2021 > Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024
11 févr. 2021 à 10:56
Yep j'avais compris mais merci encore une fois du coup, je laisse ouvert au cas où j'ai un soucis dans mon code et je ferme sdès que c'est bon
0
Rejoignez-nous