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
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
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
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
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
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
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
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
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
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022

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