Bonjour,
Je cherche à connaitre la slide affichée par l'utilisateur dans PowerPoint (en mode édition, pas projeté).
Pour cela j'utilise un event SlideChange et lorsque cet event se produit je lance int newIndex = Application.ActiveWindow.View.Slide.SlideIndex.
Le problème c'est que cet event se lance quand une nouvelle slide se crée mais aussi quand on clique sur le panneau de gauche avec les miniatures entre 2 slides. Quand on clique entre 2 slides, cela remonte une exception View (unknown member) : Invalid request. No slide is currently in view. C'est normal que cette exception ait lieu car il n'y a alors pas de vue pointée.
Ce que je veux faire c'est ignorer le cas où il y a un clic entre 2 slides.
La seule façon que j'ai trouvée aujourd'hui est de faire un try/catch
Mais ce code n'est pas très satisfaisant et à chaque création de slide j'ai un exception qui passe par catch.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private int Application_SlideChange(PowerPoint.SlideRange SlR) { try { return Application.ActiveWindow.View.Slide.SlideIndex; } catch { return 0; } }
Ma question:
Savez comment faire pour éviter de lever l'exception ? Quelque chose du genre if(Application.ActiveWindow..... != ... ){return Application.ActiveWindow.View.Slide.SlideIndex;}.
J'ai inspecté les propriétés de ActiveWindow et View mais je n'ai pas de propriété qui change dans le cas où je pointe une slide ou non. Les seules différences que j'ai vu ce sont les propriétés MediaControlsHeight, MediaControlsWidth, etc dans View qui passent d'une valeur numérique quand c'est sur une slide à une levée d'exception quand je suis entre 2 slides: {System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException: Erreur non spécifiée (Exception from HRESULT: 0x80004005 (E_FAIL))
Merci
Partager