sympatie0
Messages postés13Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention23 mai 2009
-
18 avril 2009 à 18:11
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
20 avril 2009 à 10:49
Bonjour,
Dans le cadre d'un TP j'ai une matrice representé par plusieurs TextBox alignés dans un tableLayoutPanel afin de facilité la saisie de la matrice par le clavier en appuyant sur la touche fleche -> le controle suivant ai le focus MAIS je ne sais pas comment avoir la position du textbox qui a le focus dans le tableLayoutPanel pour l'attribuer au textbox suivant.
Merci d'avance.
PS: je cherche uniquement à avoir la position du controle dans le paneaux càd le num de la ligne et de la colonne.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 19 avril 2009 à 00:01
En effectuant un cast de la référence obtenue via le paramètre sender vers le type attendu :
if ( sender == null )
{
// TODO : gérer l'erreur, référence nulle inattendue
}
else
{
// Tentative de cast
TextBox txtBox = sender as TextBox;
if ( txtBox == null )
{
// TODO : gérer l'erreur, type inattendu
}
else
{
// TODO : effectuer les validations complémentaires
// Plus qu'à coder le reste
}
}
sympatie0
Messages postés13Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention23 mai 2009 18 avril 2009 à 22:09
Merci coq ^^ mais je programme ça dans la procedure de l'evenement KeyDown alors que je n'ai que l'event E et l'objet sender comme parametre, je voudrais juste savoir quel est le textbox sur le quel l'utilisateur a appuié la touche fleche pour pouvoir utiliser GetCellPosition ou bien GetPositionFromControl
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 18 avril 2009 à 22:24
Ha, je n'avais pas compris la question dans ce sens là.
Quand tu parles de l'event KeyDown, tu parles de celui de chaque TextBox que tu as lié à un seul gestionnaire d'évènement ?
Si c'est bien le cas, il te suffit d'utiliser sender : il s'agit du contrôle ayant levé l'évènement.
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 19 avril 2009 à 09:27
Si le but est simplement de passer d'un controle a un autre, pourquoi ne pas simplement mettre correctement les taibindex sur les textbox et ensuite passer au suivant (avec l'evenement keydown) en invoquant la méthode Control.SelectNextControl ?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 20 avril 2009 à 10:49
Salut
"Tu peux faire comme ça
TextBox txt = sender as TextBox;
ou comme ça
TextBox txt = (TextBox)sender;"
Je crois que "as" est plus rapide que le cast (type).
Cependant, la grosse différence est lors de l'échec :
si, dans les deux exemples, le sender ne peut pas être converti en TextBox,
dans le premier exemple, txt sera null,
dans le deuxième exemple, une exception sera levée.
Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -