Fusion de méthode ou méthode équivalente

Résolu
Signaler
Messages postés
40
Date d'inscription
jeudi 29 septembre 2005
Statut
Membre
Dernière intervention
30 mai 2008
-
Messages postés
40
Date d'inscription
jeudi 29 septembre 2005
Statut
Membre
Dernière intervention
30 mai 2008
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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;
   }
}
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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..
}
Messages postés
40
Date d'inscription
jeudi 29 septembre 2005
Statut
Membre
Dernière intervention
30 mai 2008

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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
C'est pas sender is keyEventArgs c'est sender is MyControl.
Messages postés
40
Date d'inscription
jeudi 29 septembre 2005
Statut
Membre
Dernière intervention
30 mai 2008

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...
Messages postés
40
Date d'inscription
jeudi 29 septembre 2005
Statut
Membre
Dernière intervention
30 mai 2008

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.