Heritage - evenement...

Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
- - Dernière réponse : Arthenius
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
- 27 avril 2006 à 08:56
Salut a tous

voila je seche...

alors je vous explique le contexte.

on a developper une fenetre de facture avec des recherches sur articles clients etc...

tout ce beau monde vie ca vie tranquillou et tout ce passe bien...
seulement voila un client souhaite avoir un ou 2 champs en plus...donc nous on fait un jolie petit heritage de notre fenetre standard de facture on rajoute les champs en plus et roulez....mais la...souci

tout d'abord ...
explication sur le fonctionnement de nos fenetre de recherche....
lors d'une recherche notre fenetre lance un evenement sur la fenetre apellante pour indiquer que la recherche est fini et que l'on peu afficher le resultat de la recherche

notre objet a un evenenemtn rechercheterminee que l'on defini au niveau de la fenetre appelante...

seulemtn voila certains champs de notre clients doivent eux aussi etre recuperer apres une recherche sur les articles par exemple..

donc je me dis..pas de pb on fait un ovveride de l'envent recherche terminee (que je passe pour l'occaze en virtual) et roule ca execute le code de l'ancetre en faisant un base.rechercherterminee
et derriere je met mon code pour fignoler ma recherche en fonction de mes besoins...

seulement voila malgre mon override je ne passe aps dans mon bout de code...
a aucun momnet...

bon voila des bouts de code..

au NIVEAU DE L'ANCETRE

RechercheArticle = new cl_Recherche_Article(this.MdiMainForm.Parametre_Application.INDEX_BDD,
                        this.MdiMainForm.Parametre_Application.ConnectionString,
                        this.MdiMainForm.Dossier.DosNum, Type_Recherche_Article.Par_Code, Tb_DFART.Text, true);
//On ratache l'evenement a lancer en fin de recherche
RechercheArticle.RechercheTerminee +=new LibInfoGcom.Fenetre_de_Recherche.cl_Recherche_Article.EventHandler_RechercheTerminee(RechercheArticle_RechercheTerminee);
//On lance la recherche
RechercheArticle.Lance_Recherche();

protected internal virtual void RechercheArticle_RechercheTerminee()
{
    //Affichage des resultats...
}
AU NIVEAU DE l'enfant :

un appel standard avec un new...parce que l'override morche po...

le souci c que le recherche terminee de l'ancetre est bien lancer

mais mon code dans la fenetre enfant lui n'est jamais exceuter....

help..... :)

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Afficher la suite 

2 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
0
Merci
Salut, malgré les explications, j'ai un peu de mal à visualiser exactement ton application, est-ce que ce genre de "schéma" correspondrait mieux ?

public class A
{
    public event EventHandler End = null;


    public void DoSomething( )
    {
        MessageBox.Show( "Do Someting.." );


        OnEnd( EventArgs.Empty );
    }


    protected virtual void OnEnd( EventArgs e )
    {
        if ( End != null )
            End( this, e );


        MessageBox.Show( "OnEnd de A" );
    }
}


public class B : A
{
    protected override void OnEnd( EventArgs e )
    {
        base.OnEnd( e );


        MessageBox.Show( "OnEnd de B" );
    }
}
Commenter la réponse de Lutinore
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
0
Merci
oui plus ou moins...  sauf que OnEnd est un evenement d'un des objets que j'ai coder....

public class A
{
    public event EventHandler End = null;     public void DoSomething( )
    {
        MessageBox.Show( "Do Someting.." );

        MonObjet.OnEnd += MonObjet.EventHandler_OnEnd(OnEnd);
    }

    protected internal virtual void OnEnd( EventArgs e )
    {
        if ( End ! = null )
            End( this, e );

        MessageBox.Show( "OnEnd de A" );
    }
}

public class B : A
{
    protected override void OnEnd( EventArgs e )
    {
        base.OnEnd( e );

        MessageBox.Show( "OnEnd de B" );
    }
}

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius