2009-07-31 7 views
0

J'essaye de changer l'index actif d'un multiview en employant un délégué et cela ne fonctionne pas comme je m'attends.Le délégué ne mettra pas à jour la page

ceci est mon code

 protected void ucWaitPage_FinishedWaiting(PerformAfterWaitDelegate performAfterWait) 
    { 
     performAfterWait.Invoke(); 
     this.SetIndex(); 
    } 

    private void SetIndex() 
    { 
     this.mvwTest.ActiveViewIndex = 0; 
    } 

Le délégué performAfterWait indique la méthode SetIndex().

Lorsque le délégué performAfterWait obtient invoqué SetIndex() est appelée, mais quand SetIndex() retourne this.mvwTest.ActiveViewIndex redevient égal à 1.

Toutefois, lorsque j'appelle la méthode SetIndex() directement, il définit cette .mvwTest.ActiveViewIndex = 0 et le changement persiste lorsque la méthode retourne.

+0

Qu'est-ce que ucWaitPage et qu'est-ce qui déclenche l'événement FinishedWaiting (en supposant qu'il s'agisse d'un événement?) –

Répondre

0

Lorsque le délégué performAfterWait obtient invoqué SetIndex() est appelée mais quand retourne SetIndex() this.mvwTest.ActiveViewIndex revient d'être égal à 1.

Comment vérifiez-vous cette , pouvez-vous mettre Debug.WriteLine (this.mvwTest.ActiveViewIndex) après la fonction invoke? D'ailleurs, que voulez-vous utiliser invoke pour appeler cette méthode? Voulez-vous juste tester le délégué. Je ne vois pas l'avantage si vous appelez toujours du même fil.

Questions connexes