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

Signaler
Messages postés
16
Date d'inscription
jeudi 4 février 2021
Statut
Membre
Dernière intervention
14 février 2021
-
Messages postés
16
Date d'inscription
jeudi 4 février 2021
Statut
Membre
Dernière intervention
14 février 2021
-
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

Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
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.
Messages postés
16
Date d'inscription
jeudi 4 février 2021
Statut
Membre
Dernière intervention
14 février 2021

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 ^^
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
tu dit
Pour cela, lorsque j'instancie une PictureBox, je crée un nouvel event qui renvoi à la méthode ClickPictureBox.


montre le code
Messages postés
16
Date d'inscription
jeudi 4 février 2021
Statut
Membre
Dernière intervention
14 février 2021

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);
        }
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Ok,

Maintenant la signature de DetectClick
Messages postés
16
Date d'inscription
jeudi 4 février 2021
Statut
Membre
Dernière intervention
14 février 2021

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)
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Ben voilà, p c’est le pictureBox qui a été cliqué
Messages postés
16
Date d'inscription
jeudi 4 février 2021
Statut
Membre
Dernière intervention
14 février 2021
>
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021

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