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:
Voici une classe pour passer des arguments personnels :Code:
1
2
3
4
5 public interface ITab { event EventHandler OnTabChanged; }
Voici une méthode de l'implémentation dans laquelle je lance l'évènement:Code:
1
2
3
4
5
6
7
8
9 public class TabEventArgs : EventArgs { public int previousIndex; public TabEventArgs (int previousActiveView) : base() { previousIndex = previousActiveView; }
Voici dans le programme comment je traite l'évènement:Code:
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.... }
C'est dans la methode m_OnTabChanged que j'aimerais annuler la suite de l'évènement.Code:
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)); } }
Cela est il possible ?
C'est mon premier projet .NET, merci pour votre aide.