cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
2 déc. 2005 à 01:13
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
2 déc. 2005 à 11:48
Bonsoir,
Je commence à désespérer je n'arrive pas à mettre en place un évènement, je ne compte plus les heures que je passe sur ce **** d'événement
J'ai beau regarder la documentation MSDN je n'ai pas trouvé d'exemple concret d'event.
Quelqu'un a -t-il un exemple similaire à mon cas ?
Merci d'avance
Alors voila, j'ai une ClassLibrairy,
J'ai dans une méthode une boucle qui fait varier une variable et je voudrais récupérer sa valeur pour faire avancer une progressbar
Donc je pensais à mettre en place un évènement OnProgress qui donnerais ma valeur de progression
Voici mon bout de code
LUDINSKI
Messages postés441Date d'inscriptionmardi 2 décembre 2003StatutMembreDernière intervention22 mai 20128 2 déc. 2005 à 05:18
Salut Willi !
En effet, c'est pas vraiment bien expliqué dans MSDN,
mais tu verras, c'est assez simple à mettre en place :
Je suis en train de développer une classe qui permet de crypter/décrypter des fichiers
Et, tout comme toi, j'ai dû générer un événement qui indique la progression du traitement
J'ai en plus ajouter une propriété "Abord" qui permet d'indiquer si l'action doit être annulée !
* Tout d'abord, tu dois créer la classe d'arguments de l'évènement (en dehors de ta classe) :
/// <summary>Argument de l'événement généré lorsque la progression d'un traitement évolue</summary>
public
class CryptionProgressEventArgs : EventArgs
{
private
string _fileName;
private
int _percent;
private
bool _isEncrypting;
private
bool _abord;
/// <summary>Constructeur</summary>
/// Fichier en cours de cryptage/décryptage
/// <summary>Fichier en cours de cryptage/décryptage</summary>
public
string FileName
{
get{
return _fileName; }
}
/// <summary>Pourcentage du traitement effectué</summary>
public
int Percent
{
get{
return _percent; }
}
/// <summary>Valeur indiquant s'il s'agit d'un cryptage (false : décryptage)</summary>
public
bool IsEncrypting
{
get{
return _isEncrypting; }
}
/// <summary>Obtient ou défini une valeur indiquant si l'action en cours doit être annulée</summary>
public
bool Abord
{
get{
return _abord; }
set{ _abord =
value; }
}
}
* Ensuite tu crées le délégué de ton évènement (En dehors de ta classe aussi, c'est préférable) :
/// <summary>Délégué de l'événement indiquant la progression d'un traitement</summary>
public
delegate
void CryptionProgressDelegate( CryptionProgressEventArgs e );
* Et finalement tu crées l'évènement (dans ta classe) :
/// <summary>Evénement généré pour indiquer la progression d'un cryptage/décryptage</summary>
public
event CryptionProgressDelegate OnCryptionProgress;
* Pour générer l'évènement (toujours dans ta classe) :
// Au moin un objet est abonné à l'évènement
if( OnCryptionProgress != null )
{
// Crée les arguments de l'évènement
CryptionProgressEventArgs eventArgs;
eventArgs =
new CryptionProgressEventArgs( sourceFile, currentPercent, isEncryption );
// Génère l'évènement
OnCryptionProgress( eventArgs );
// A partir d'ici, la propriété eventArgs.Abord a été positionné par l'objet abonné à l'évènement
}
Du côté de l'objet qui utilise ta classe, je pense que sais comment faire....
A toi de jouer !
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 2 déc. 2005 à 10:53
Parfait,
En fait ce qui m'étonne c'est que mon code été comme le tient mais il me manquait le petit plus de la création de l'abonnement...
En tout cas cela fonctionne et c'est vraiment simple au final....
par contre à quoi servent tes propriétés dans ta classe CryptionProgressEventArgs à part Abord ?
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 2 déc. 2005 à 11:48
Oui effectivement je sais.... j'ai utilisé ma propriété percent pour tester avant de poster ma question....gniiii je me tairais la prochaine fois
Ok bien encore merci mille fois de ton aide