Sobre la base de sus comentarios, entiendo que desea controlar la "Abrir en ventana nueva" acción para el control WebBrowser y redefinir el comportamiento por defecto para abrir en una nueva pestaña dentro de su aplicación en su lugar.
Para lograr esto de forma confiable, debe obtener en el evento NewWindow2, que expone ppDisp (un puntero configurable para el control WebBrowser que debe abrir la nueva ventana). Todas las demás soluciones potenciales pirateadas juntas (como la obtención del último enlace seleccionado por el usuario antes del evento OpenWindow) no son óptimas y pueden fallar en casos de esquina.
Afortunadamente, hay una forma (relativamente) simple de lograr esto mientras se usa el control System.Windows.Forms.WebBrowser como base. Todo lo que necesita hacer es extender WebBrowser e interceptar el evento NewWindow2 mientras proporciona acceso público a la instancia de ActiveX (para pasar a ppDisp en pestañas nuevas). Esto se ha hecho antes, y Mauricio Rojas tiene un excelente ejemplo de una clase de trabajo completo "ExtendedWebBrowser":
http://blogs.artinsoft.net/mrojas/archive/2008/09/18/newwindow2-events-in-the-c-webbrowsercontrol.aspx
Una vez que tenga la clase ExtendedWebBrowser, todo lo que necesita hacer es manejadores de configuración para NewWindow2 y el punto ppDisp a un navegador en una nueva pestaña. He aquí un ejemplo que puse juntos:
private void InitializeBrowserEvents(ExtendedWebBrowser SourceBrowser)
{
SourceBrowser.NewWindow2 += new EventHandler<NewWindow2EventArgs>(SourceBrowser_NewWindow2);
}
void SourceBrowser_NewWindow2(object sender, NewWindow2EventArgs e)
{
TabPage NewTabPage = new TabPage()
{
Text = "Loading..."
};
ExtendedWebBrowser NewTabBrowser = new ExtendedWebBrowser()
{
Parent = NewTabPage,
Dock = DockStyle.Fill,
Tag = NewTabPage
};
e.PPDisp = NewTabBrowser.Application;
InitializeBrowserEvents(NewTabBrowser);
Tabs.TabPages.Add(NewTabPage);
Tabs.SelectedTab = NewTabPage;
}
private void Form1_Load(object sender, EventArgs e)
{
InitializeBrowserEvents(InitialTabBrowser);
}
(Asume TabControl nombrado "aquí" y la ficha inicial de control que contiene niño atracado ExtendedWebBrowser nombrado "InitialWebBrowser")
No se olvide de cancelar el registro de los eventos cuando las pestañas ¡esta cerrado!
Soy alguien más que tiene problemas con, por ejemplo, abrir cada vez que hago clic en un enlace de página web dentro mi propio navegador Intenté todo lo anterior pero no tuve suerte, la primera respuesta de Robert Agregué ExtendedWebBrowser en modo de diseño, pero sigo obteniendo la línea roja debajo (InitialTabBrowser) en la última línea de código, y la advertencia de 'InitialTabBroswer no existir en el contexto actual '. Cualquier otro consejo/consejos sería genial. –