Créer des évenements

Résolu
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 2 juin 2006 à 16:27
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 13 juin 2006 à 00:33
Bonjour,

je cherche à déclancher certaines actions lorsque je manipule des fichiers dans un dossier (celà peut être toutes sorte de manipulations : suppression,ajout, modification ou simple séléction d'un fichier). Est-il facile de créer des évenements tels que ceux ci ? Si oui, comment faire ?

merci d'avance pour votre aide.

Mathmax

30 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
4 juin 2006 à 21:32
Faut juste ajouter le using qui va bien quoi... Rien de sorcier, juste une petite manip ou un peu de recherche.

System.Runtime.InteropServices.ComTypes

Mx
MVP C# 
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
4 juin 2006 à 21:48
Excuses-moi, j'ai en effet complètement oublié de rajouter le namespace.
En le rajoutant, j'obtiens en effet l'exception suivante :

<hr size= "2" width="100%" /> InvalidCastException was unhandled
Unable to cast COM object of type 'SHDocVw.InternetExplorerClass' to interface type 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{B196B284-BAB4-101A-B69C-00AA00341D07}' failed due to the following error: Cette interface n'est pas prise en charge (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
<hr size ="2" width="100%" />

Mathmax
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 juin 2006 à 00:13
J'ai recompilé avec tlbimp en .NET 1.1 les 2 wrappers :

Shell32.dll
SHDocVw.dll
Télécharge les deux DLLs, créer un nouveau projet et ajoute les comme référence. Le .NET 1.1 n'utilise pas l'interface IConnectionPointContainer, donc avec un peu de chance ça devrait marcher. ( ça marche chez moi   ).
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
5 juin 2006 à 01:27
Désolé, j'ai recréer un nouveau projet en y ajoutant tes 2 dll mais j'obtiens toujours le même message d'erreur et la même InnerException...
Mathmax
0

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

Posez votre question
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
5 juin 2006 à 11:15
Ca marche avec le timer. C'est bizarre que les évenements ne marchent pas dans le programme précédent. J'ai l'autre jour écris un programme avec un classe personne possédant les propriétés nom et prénom et avec un évenement "quand une personne change d'identité". Je n'ai pourtant pas rencontré de problème ...
En tout cas merci beaucoup ton aide.

Mathmax
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
12 juin 2006 à 11:55
Juste une question encore concernant le premier programme avec les évenements. Je n'ai jamais vu cette façon d'utiliser les délégués :

ie.DocumentComplete += delegate
{
}

Dans cette syntaxe, je ne vois pas quand on fait appel à l'évenement DocumentComplete. Pourrais tu m'expliquer cette façon de présenter les chôses.

Mathmax
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 juin 2006 à 13:07
Ca s'appelle une méthode anonyme.. la methodé n'a pas de nom.. c'est une simplification d'écriture.

Par contre le code IL généré lui, est beaucoup plus difficile à comprendre.. en gros le compilateur va créer une vraie méthode à ta place.. mais dans la cas des méthodes non statiques il va aussi créer une classe, et eventuellement des variables membres dans cette classe ( des variables capturées ).

C'est bien de savoir ce qui se passe dans le code IL mais en C# tu as juste à retenir ça :

// Sans paramètres
this.Click += delegate
{
    MessageBox.Show( "Click" );
};


// Avec paramètres.
this.Click += delegate( object sd, EventArgs e )
{
    MessageBox.Show( "Click" );
};
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
12 juin 2006 à 16:18
oui mais à quel moment la méthode est appelée ?

Mathmax
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
12 juin 2006 à 16:20
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
12 juin 2006 à 21:14
Ok mais ce quie je ne comprends pas trop c'est quand et comment le document se charge.
Url représente le lien du document à charger mais n'est ie ne le sait pas quand on écrit ie.DocumentComplete += delegate {...}
Il ne le sais quand on eppelle la méthode Navigate qui se situe après le délégué, non ?

Mathmax
0
Rejoignez-nous