当前位置: 首页 > 编程语言 > C#

WebBrowser-Control-点击链接打开默认浏览器Share

时间:2023-04-10 13:23:04 C#

WebBrowser-Control-点击链接打开默认浏览器在其中一个链接上,将在WebBrowser-Control中打开一个新页面。但它应该在新的默认浏览器窗口中打开。WebBrowser-Control中的内容不应更改。有没有办法改变这种行为?您可以在导航事件中使用Proces.Start()在默认浏览器中打开一个新页面并设置e.Cancel=true;这样控件中的页面就不会改变。示例:@MainWindow.xaml.cs使用System.Diagnostics;使用System.Windows;使用System.Windows.Navigation;命名空间OpenDefaultBrowser{publicpartialclassMainWindow:Window{privatestaticboolwillNavigate;publicMainWindow(){InitializeComponent();}privatevoidwebBrowser1_Navigating(objectsender,NavigatingCancelEventArgse){//第一页需要在webBrowser控件中加载if(!willNavigate){willNavigate=true;返回;}//取消导航到webBrowser控件中单击的链接e.C=true;varstartInfo=newProcessStartInfo{FileName=e.Uri.ToString()};Process.Start(startInfo);@MainWindow.xaml我不认为WebBrowser是这样的,即使在普通浏览器中,如果单击超链接并且它代表一个简单的URL(不是基于javascript的超链接),它将打开该URL(以及特定的选项卡)本身在该浏览器窗口中。WebBrowser控件模仿浏览器本身的这种基本行为。我认为您可以右键单击超链接并说“在新窗口中打开”(查看该选项是否在WebBrowser控件中启用)。如果该选项被禁用,可以使用特殊的HTMLHostAPI启用它。默认情况下,Web浏览器控件在单击链接时不会打开默认浏览器,只会在InternetExplorer的浏览器中单击链接。现在我们可以使用_DocumentCompleted事件,但它需要基于事件的触发器(如链接按钮)才能工作。现在的问题是,如果浏览器控件中的html有一个href,这甚至不起作用。解决方案是使用_NewWindow事件。代码如下/*事件处理程序*/e.Cancel=true;打开网站(webbrowser.StatusText.ToString());网络浏览器=空;}/*函数调用*/publicstaticvoidOpenWebsite(stringurl){Process.Start(GetDefaultBrowserPath(),url);}privatestaticstringGetDefaultBrowserPath(){stringkey=@"httpshellopencommand";RegistryKeyregistryKey=Registry.ClassesRoot。OpenSubKey(键,假);return((string)registryKey.GetValue(null,null)).Split('"')[1];}欢迎提出改进建议,祝大家编码愉快以上是C#学习教程:WebBrowser-Control–点击链接打开默认浏览器分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如有涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: