2011-05-10 280 views
1

我的應用程序使用默認的Web瀏覽器加載數據時打開了瀏覽器。C#Web瀏覽器導航

//Set the function and display the browsers we're using (per screen) 
browsers[index].Width = screens[index].Bounds.Width; 
browsers[index].Height = screens[index].Bounds.Height; 
browsers[index].Location = new System.Drawing.Point(screens[index].Bounds.X, screens[index].Bounds.Y); 

browsers[index].Navigate(new Uri(lines[index])); 
browsers[index].Show(); 

現在我的問題是,當你點擊頁面上的鏈接,它會離開我的應用程序,並完全打開一個新的瀏覽器。任何方式擺脫這個?

行包含一個URL數組,瀏覽器是一個網頁的數組,加載到不同的屏幕上。

回答

3

如果我沒有錯,這是因爲'TARGET =「_blank」',我會嘗試從內容呈現之前從標記中刪除這個。

private void Browser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) 
{ 
    var webBrowser = (WebBrowser)sender; 
    if (webBrowser.Document != null) 
    { 
     foreach (HtmlElement tag in webBrowser.Document.All) 
     { 
      if (tag.Id == null) 
      { 
       tag.Id = String.Empty; 
       switch (tag.TagName.ToUpper()) 
       { 
        case "A": 
        { 
         tag.MouseUp += new HtmlElementEventHandler(link_MouseUp); 
         break; 
        } 
       } 
      } 
     } 
    } 
} 


private void link_MouseUp(object sender, HtmlElementEventArgs e) 
{ 
    var link = (HtmlElement)sender; 
    mshtml.HTMLAnchorElementClass a = (mshtml.HTMLAnchorElementClass)link.DomElement; 
    switch (e.MouseButtonsPressed) 
    { 
     case MouseButtons.Left: 
     { 
      if ((a.target != null && a.target.ToLower() == "_blank") || e.ShiftKeyPressed || e.MouseButtonsPressed == MouseButtons.Middle) 
      { 
       AddTab(a.href); 
      } 
      else 
      { 
       CurrentBrowser.TryNavigate(a.href); 
      } 
      break; 
     } 
     case MouseButtons.Right: 
     { 
      CurrentBrowser.ContextMenuStrip = null; 
      var contextTag = new ContextTag(); 
      contextTag.Element = a; 
      contextHtmlLink.Tag = contextTag; 
      contextHtmlLink.Show(Cursor.Position); 
      break; 
     } 
    } 
} 

出處:http://stackoverflow.com/questions/5312275/open-new-web-page-in-new-tab-in-webbrowser-control

+0

你是正確的,我是從C#角度思考問題,因爲我是新來的,我不認爲它會像那樣處理它,顯然它已經,但是這是問題。 _blank目標。 – 2011-05-10 12:09:56

+0

@Richard Dickinson,你能把這個標記爲答案,以便其他社區成員可以專注於其他問題,我也會贏得一些聲譽:)謝謝 – RaM 2011-05-10 12:13:52

+0

是的,每個主題都有5分鐘的上限,所以它不能完成,直到過去。 – 2011-05-10 12:16:50