2011-05-10 1 views
1

기본 웹 브라우저를 사용하여 데이터를로드하는 응용 프로그램에 열린 브라우저가 있습니다.C# 웹 브라우저 탐색

//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 대상입니다. –

+0

@ 리차드 디킨슨, 다른 커뮤니티 회원이 다른 질문에 집중할 수 있도록 답변을 표시해 주시겠습니까? :) 감사합니다. – RaM

+0

예, 각 주제마다 5 분 제한이 있으므로 사용할 수 없습니다. 경과 할 때까지 행해진 다. –