System.Windows.Forms.WebBrowser
- очень уродливый элемент управления и одна из его самых больших проблем - поддержка мульти-табуляции.Он вообще его не поддерживает.
Я потратил кучу времени, чтобы попытаться заставить его работать должным образом, но не добился достаточного успеха, поэтому рекомендую вместо этого попробовать сторонний контроль.
Обход проблемы:подписаться на событие click каждого <a>
на странице (или некоторых из них вам нужно) и создать новые окна вручную.Например, посмотрите, как это реализовано в dotBrowser: 1 2
foreach (HtmlElement tag in webBrowser.Document.All)
{
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)
{
mshtml.HTMLAnchorElementClass a = (mshtml.HTMLAnchorElementClass)((HtmlElement)sender).DomElement;
switch (e.MouseButtonsPressed)
{
case MouseButtons.Left:
{
// open new tab
break;
}
case MouseButtons.Right:
{
// open context menu
break;
}
}
}