2010-07-15 91 views
2

有人知道如何在WPF WebBrowser控件中的链接上点击点击吗?WPF WebBrowser控件 - 无LinkClicked事件

在页面导航之前,我需要获取链接目标,点击链接时。

任何输入高度赞赏!

我的代码工程的解决方案提出了简单的链接,这将用下面的代码来实现:

private void webBrowser1_Navigating(object sender, NavigatingCancelEventArgs e) 
{ 
    //prefix must be lowercase (ssrs conforms to web-standards and makes things lowercase) 
      string myPrefix = "http://myPrefix"; 

      //check if target starts with the prefix 
      if (e.Uri.AbsoluteUri.StartsWith(myPrefix)) 
      { 
       //cancel Navigation 
       e.Cancel = true; 
      } 
} 

感谢您hepling我出这一点。

回答

2

您可以将事件处理程序附加到导航事件。提取链接,在导航页面之前执行您的逻辑。

干杯。

+0

但有时链接单击不会导致导航,但会执行JavaScript处理程序。 – STO 2010-07-15 13:14:35

+0

谢谢两位 @DrakeVN,我确实尝试获取导航事件中加载的页面中的所有链接,并为每个链接添加事件。但是,当需要与许多com_objects一起工作时,这会变得有点多毛。与Windows窗体中的WebBrowser控件相比,似乎有很多变化。我会尝试你更简单的方法。 @STO:在我的情况下,javascript处理程序的链接不应该成为问题,因为我使用Reporting Services中的陷阱链接打开相应的元素。 – SwissCoder 2010-07-15 13:54:07

+0

@STO如果javaScript处理程序执行一些处理,然后执行window.open,是否有方法来捕获该开放,然后在容器应用程序的范围内显示该Url,可能是WebBrowser控件的新实例 – Nitin 2017-07-10 15:58:09

0

控制你点击在web浏览器导航事件的处理程序。您可以在Xal或构造函数中创建它并使用以下方法:

private void webBrowser_Navigating(object sender, NavigatingCancelEventArgs e) 
    { 
     // The WebBrowser control is checking the Uri 
     if (e.Uri.ToString() != "Place your url string here") //ex: "http://stackoverflow.com" 
     { 
      // Uri is not the same so it cancels the process 
      e.Cancel = true; 
     } 
    }