J'ai ajouté un Chromium WebBrowser à mon application C# en utilisant la bibliothèque CefSharp, et je veux maintenant ajouter une fonctionnalité à un bouton 'Retour', qui permettra à l'utilisateur de naviguer vers la page précédente.Chromium webBrowser méthodes de navigation
Si je comprends bien, ce serait fait avec la ligne suivante:
browser.WebBrowser.Back();
Cependant, si je viens d'écrire cette ligne dans la méthode qui est appelée lorsque le bouton « Retour » est pressée, une exception est jeté, et mon application casse.
L'exception dit:
exception non gérée
Une exception non gérée du type System.Exception eu lieu dans CefSharp.dll
Informations complémentaires: instance lBrowser est nulle. Le navigateur n'a probablement pas fini d'initialiser ou est en train de s'en débarrasser.
Pourquoi ai-je reçu cette exception? Si je passe la souris mon curseur sur la ligne que l'exception se produit sur, un message apparaît qui dit:
(extension) de lWebBrowser.Back void()
retourner directement, doit vérifier avant lWebBrowser.CanGoBack appeler cette méthode.
Mais, si je me déplace ensuite cette ligne dans une déclaration if
qui vérifie la valeur de lWebBrowser.CanGoBack
premier, à savoir
if(browser.WebBrowser.CanGoBack){
browser.WebBrowser.Back();
}
alors, bien que mon application fonctionnera, CanGoBack
semble toujours être FALSE- tout moment J'appuie sur le bouton 'Retour', le débogage montré dans ma console indique qu'il est faux ... mais si essayer de lui assigner une valeur de true
n'importe où (ie quand l'utilisateur navigue vers une autre page- donc il y a une page à aller retour à), par exemple:
browser.WebBrowser.CanGoBack = true;
je reçois une erreur de compilation qui dit:
propriété ou indexeur « lWebBrowser.CanGoBack » ne peut pas être attribué à - il est en lecture seule
Alors, comment puis-je forcer le navigateur revenir sur une page lorsque l'utilisateur clique sur le bouton 'retour'?
'Le navigateur n'a probablement pas terminé l'initialisation', car l'exception indique que le navigateur n'a pas fini de s'initialiser, jusqu'à ce qu'il soit initialisé, vous ne pouvez pas exécuter de méthodes dessus. 'CanGoBack' n'est pas une propriété que vous pouvez définir, elle est calculée par le navigateur lui-même. 'CanGoBack' devrait être défini lorsque le chargement du navigateur est terminé. Jetez un oeil à la source si vous avez besoin de clarification. Comme vous ne l'avez pas déclaré si vous utilisez «WinForms» ou «WPF», il n'est pas possible de vous fournir une réponse détaillée. – amaitland