Je voudrais modifier les menuitems dans le menu contextuel par défaut fourni dans le contrôle du navigateur Web. J'ai déjà essayé: webbrowser.contextmenu = mycontextmenu. Rien n'a changé. Y a-t-il un moyen de faire cela?Y at-il un moyen de modifier le menu contextuel d'un navigateur Web en utilisant Wpf (C#)
Répondre
La réponse courte est non. Voir this thread pour plus de détails.
La réponse courte est oui.
Cet article est tous WinForms. Avez-vous du code qui fonctionnerait dans WPF? –
Cela devrait fonctionner dans WinForms et dans WPF car il repose sur la personnalisation de mshtml. REMARQUE: Ajout d'un nouveau lien vers un autre article dans ma réponse. – batzen
Je suis en train de faire la même chose. J'ai lu environ 5 articles de codeproject (ils sont un peu vieux en passant) mais je n'ai pas pu avoir la partie COM Interop juste. Probablement parce que je ne peux pas programmer en C++.
Mais ensuite j'ai trouvé cette page http://www.pinvoke.net/default.aspx/Interfaces/IDocHostUIHandler.html qui semble prometteuse. Il contient une interface C# qui prétend fournir la fonctionnalité que vous voulez. Cependant, je ne pouvais toujours pas le faire fonctionner complètement, alors j'apprécierais que quelqu'un d'autre puisse contribuer à cette réponse. Puisque je ne sais pas à quel point vous êtes familier avec C# (je suis plutôt un noob), je vais poster quelques étapes supplémentaires ici, en utilisant VS2008. Ajoutez le Microsoft.mshtml en tant que référence à votre projet, créez une nouvelle interface C# et, en plus de l'interface, ajoutez les 3 instructions supplémentaires "using".
using System.Windows;
using System.Runtime.InteropServices;
using mshtml;
Et collez le code de la définition d'interface. Ensuite, faites en sorte que le conteneur WebBrowser implémente cette interface et toutes les méthodes. C'est jusqu'où je suis allé jusqu'à maintenant. Je suis toujours à la recherche d'un moyen de rediriger les événements du navigateur vers le conteneur.
Réponse - OUI. Il existe un paramètre dans le contrôle webbrowser pour: .IsWebBrowserContextMenuEnabled = false;
La définition de cette option sur false désactive le menu contextuel IE, permettant à celui que vous avez défini de gérer les racines. Simples ..
Jetez un oeil à http://stackoverflow.com/questions/31411328/custom-context-menu-for-wpf-webbrowser-control/34602392#34602392 – MartinHoly