2016-06-06 2 views
1

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'?

+0

'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

Répondre

0

Il semble donc que le problème concernait la version de CefSharp que j'avais installée/la version que je référençais - il semble que j'avais installé et référenciez la dernière version, mais le compilateur semblait penser que je référençais une version plus ancienne, et ne pouvait pas décider lequel il pensait qu'il devrait utiliser. Après avoir désinstallé CefSharp, supprimé toutes les références que je lui avais faites, et réinstallé/ré-implémenté mes utilisations, mon application utilise maintenant le navigateur correctement, et je suis capable d'afficher et d'interagir complètement avec la page web que j'affiche .

+0

Super que c'est résolu! Votre réponse ne correspond pas vraiment à la question que vous avez posée, la désinstallation ne semble pas liée à 'GoBack' et' CanGoBack' – amaitland