Fusion de méthode ou méthode équivalente

Résolu
ggrug26 Messages postés 40 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 30 mai 2008 - 27 mars 2008 à 10:59
ggrug26 Messages postés 40 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 30 mai 2008 - 28 mars 2008 à 08:57
bonjour,

j'ai une petite question, est il possible de fusionner 2 méthode ensemble? Je vais me faire comprendre avec mon exemple:
je cherche a regrouper les différents actions possible pour la même boucle...

private
void clickrow(
object sender,
EventArgs e)
{
   AffichRecherch();
}

private
void clickrow(
object sender,
KeyEventArgs e)
{
   AffichRecherch();
}

le regrouper avec un truc dans le genre:

private
void clickrow(
object sender,
EventArgs e || KeyEventArgs e
)
{
   AffichRecherch();
}

Des idées?
Le 1er correspond au click sur une cellue dans le tableau et le second a l'appuie sur les touches haut ou bas.

Sinon y a t il un controle permettant de prendre en compte tous les actions ur le tableau (up down ou click) ?

Merci de votre aide.

6 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 mars 2008 à 13:40
Salut, dans ton exemple c'est possible grace à la "covariance et la contravariance" des délégués en .NET 2.0. Abonne tes évènements au même gestionnaire avec les paramètres "object sender" et "EventArgs e".

private void Click( object sd, EventArgs e )
{
   if ( sd is Bidule)
   {
      BiduleEventArgs args = ( BiduleEventArgs )e;
   }
}
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 mars 2008 à 16:27
C'est simple sender c'est toujours le contrôle qui envoie l'évènement, ( sauf pour les évènements statiques ).

tu as écrit ça :

if ( sender is KeyEventArgs )

ça ne peut pas marche, il faut tester le sender comme ça :

if ( sender is Button ) // Button ou DataGrid etc..

Dans ton cas si c'est toujours le même contrôle il te suffit de faire :

if ( e is KeyEventArgs ) // ou utiliser l'opérateur as
{
 // etc..
}
3
ggrug26 Messages postés 40 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 30 mai 2008
27 mars 2008 à 15:45
Adapté a mon cas, cela donne:

private
void clickrow(
object sender,
EventArgs e)
{

      if (sender
is
KeyEventArgs)
      {

             KeyEventArgs args = (
KeyEventArgs)e;
      }
      AffichRecherch();
}

Par contre pourrait tu me donné quelques explications sur le fonctionnement ?

Je ne saurais pas expliquer cette routine... Merci
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 mars 2008 à 15:51
C'est pas sender is keyEventArgs c'est sender is MyControl.
0

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

Posez votre question
ggrug26 Messages postés 40 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 30 mai 2008
27 mars 2008 à 15:59
Désolé, je ne connais pas ce type de controle, pourrais-tu être un peu plus clair?
En tout cas ce que je écrit marche mais je ne sais pas pourquoi...
0
ggrug26 Messages postés 40 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 30 mai 2008
28 mars 2008 à 08:57
voila ce que ça donne au final

private
void clickrow(
object sender,
EventArgs e)
{

if ( e
is
KeyEventArgs )
{

KeyEventArgs args = (
KeyEventArgs)e;
}
AffichRecherch();
}

Merci pour ces infos !!!  Ce qui m'étonne c'est que ce que je t'ai donné en premier par rapport a ta réponse marchait...

Bon, en tout cas merci.
0
Rejoignez-nous