Bonjour,
je dispose d'une interface graphique depuis laquelle je lance un évènement lorsqu'un composant particulier est activé.

J'aimerais pouvoir annuler cet évènement selon certaines conditions depuis le delegate.

Je vous fournis quelques exemples de code qui seront certainement plus parlant:

Voici l'interface qui declare l'évènement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public interface ITab
{
	event EventHandler OnTabChanged;
}
Voici une classe pour passer des arguments personnels :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public class TabEventArgs : EventArgs
{
	public int previousIndex;
 
	public TabEventArgs (int previousActiveView) : base()
	{
		previousIndex = previousActiveView;
	}
Voici une méthode de l'implémentation dans laquelle je lance l'évènement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
private void ChangeTab(int index)
{
	int previousActiveView = GetIndexActiveView ();
 
	EventHandler handler = PreTabChangedEvent;
	if (handler != null)
 
	{
		handler(this, new TabEventArgs(previousActiveView));
	}
 
        //du code ensuite....
}
Voici dans le programme comment je traite l'évènement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
AppContainer main = AppContainer.getMainViewController();
 
ITab m = (ITab)main;
m.OnTabChanged += (object sender, EventArgs e) => {
	m_OnTabChanged(sender,(TabEventArgs) e);
};
void m_OnTabChanged(object sender, TabEventArgs e)
{
	int previous = e.previousIndex;
	if (previous == 3) {	
		ShowMessageBox (200, 200, "Previous tab was Tab " + (previous + 1));
	}
}
C'est dans la methode m_OnTabChanged que j'aimerais annuler la suite de l'évènement.

Cela est il possible ?

C'est mon premier projet .NET, merci pour votre aide.