Al utilizar el control .NET WebBrowser, ¿cómo se abre un enlace en una nueva ventana utilizando la misma sesión (es decir, no se inicie una nueva sesión de ASP.NET en el servidor), o ¿cómo se captura el nuevo evento de ventana para abrir la URL en el mismo control WebBrowser?System.Windows.Forms.WebBrowser abre vínculos en la misma ventana o en una nueva ventana con la misma sesión
12
A
Respuesta
19
Acabo de pasar una hora buscando la respuesta, así que pensé en publicar los resultados aquí. Puede usar el objeto SHDocVwCtl.WebBrowser_V1 para capturar el evento NewWindow.
NOTA: Código de http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_21484555.html#discussion
//-------------------------------VB.NET Version:-------------------------------
Dim WithEvents Web_V1 As SHDocVwCtl.WebBrowser_V1
Private Sub Form_Load()
Set Web_V1 = WebBrowser1.Object
End Sub
Private Sub Web_V1_NewWindow(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Processed As Boolean)
Processed = True
WebBrowser1.Navigate URL
End Sub
//-------------------------------C# Version-------------------------------
private SHDocVw.WebBrowser_V1 Web_V1; //Interface to expose ActiveX methods
private void Form1_Load(object sender, EventArgs e)
{
//Setup Web_V1 interface and register event handler
Web_V1 = (SHDocVw.WebBrowser_V1)this.webBrowser1.ActiveXInstance;
Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(Web_V1_NewWindow);
}
private void Web_V1_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData,string Headers, ref bool Processed)
{
Processed = true; //Stop event from being processed
//Code to open in same window
this.webBrowser1.Navigate(URL);
//Code to open in new window instead of same window
//Form1 Popup = new Form1();
//Popup.webBrowser1.Navigate(URL);
//Popup.Show();
}
3
limpiarse ligeramente hacia arriba versión de la respuesta de Greg. Modifica el comportamiento del control transferido en lugar de depender de una variable global. Uso:
InlinePopups(webBrowser1);
Código:
// interface to expose ActiveX methods
private SHDocVw.WebBrowser_V1 Web_V1;
private void InlinePopups(WebBrowser browser)
{
// hooks to force new windows to open in the current instance
Web_V1 = (SHDocVw.WebBrowser_V1)browser.ActiveXInstance;
Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler((string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed) =>
{
Processed = true; // stop event from being processed
// open in the existing window
browser.Navigate(URL);
});
}
todavía necesita la referencia a% windir% \ system32 \ shdocvw.dll, por supuesto.
Cuestiones relacionadas
- 1. Google CSE abre en una nueva ventana
- 2. Javascript: abrir nueva página en la misma ventana
- 3. abrir un enlace en una nueva pestaña en la misma ventana
- 4. ¿Cómo ejecutar emacs grep-find link en la misma ventana?
- 5. ¿Cómo ejecuto un .exe pero permanezco en la misma ventana de comando (no abre uno nuevo)?
- 6. Abre nueva ventana en la devolución de datos
- 7. Abrir la imagen en una nueva ventana
- 8. Mostrar imágenes múltiples (2,3,4, ...) en la misma ventana en OpenCV
- 9. Probando si se abre una nueva ventana con Watir-Webdriver
- 10. Abrir una nueva ventana del navegador con una nueva ID de sesión en ASP.NET
- 11. ¿Cómo puedo reutilizar la misma ventana/buffer de Vim para la salida del comando, como la ventana de ayuda?
- 12. Multiple WebRequest en la misma sesión
- 13. QWebView no abrir vínculos en nueva ventana y se inicia la aplicación externa para manejar pdf
- 14. Escribir en la misma ubicación en una ventana de consola con java
- 15. .bashrc/.profile no está cargado en la nueva sesión de tmux (o ventana) - ¿por qué?
- 16. Bookmarklet En ventana nueva
- 17. cómo prevenir la reapertura de una nueva ventana con jQuery?
- 18. target = "_ blank" abre una nueva ventana en IE9, en lugar de una nueva pestaña
- 19. Abre una nueva ventana mediante POST usando h: commandButton
- 20. Copie la página web actual en una nueva ventana
- 21. GWT Ventana emergente en la nueva ventana del navegador
- 22. Iniciar un proceso en la misma consola
- 23. Cómo detectar que la misma página ya está abierta en otra ventana en IE
- 24. Abrir página en una nueva ventana sin ventana emergente
- 25. Respuesta.Redirecta a la nueva ventana
- 26. Generando un enlace con Markdown (BlueCloth) que se abre en una nueva ventana
- 27. Adjuntar a la 'pantalla' sesión con la creación de una nueva ventana de pantalla
- 28. Cómo forzar el control del navegador web para que siempre abra la página web en la misma ventana?
- 29. Matlab: muestra dos imágenes con dimensiones originales en la misma ventana
- 30. abierto * Hombre <pages> * en la misma ventana de emacs
¿En qué ensamblaje se define SHDocVw? No puedo encontrarlo en mshtml.dll al menos. –
creo que se encuentra en% windir% \ system32 \ shdocvw.dll –
Obejet no es miembro de webBrower1 que es lo que soy gettinf –