Principales respuestas
Poner en foco en mi programa en C#

Pregunta
-
Hola, tengo una consulta por un problema que estoy teniendo.
Tengo un proceso en donde abro una URL, pero previamente pongo la propiedad TopMost del formulario en true, y luego de abrir la URL la pongo en false:
This.TopMost = true;
Process.Start("www.google.com");
This.TopMost = false;
El tema es el siguiente, se abre la URL en el navegador de fondo (es decir el formulario de mi programa está por delante por la propiedad TopMost en true), pero despues de abrirse, el foco de Windows queda en el navegador y no en el formulario de mi programa que se ve por encima del navegador. Para explicarlo bien, sería como que en la barra de tareas inferior de Windows, queda activado el navegador, y no el formulario de mi programa (a pesar de que esté por encima del navegador) que es lo que yo necesito.
Probé poniendo el This.Focus() pero tampoco funciona. Hay alguna manera de hacerlo? seleccionar por código c# que quede el foco en mi programa y no en el navegador?
Espero haberme explicado bien
Gracias de antemano!
Respuestas
-
hola
recuerda que el Topmost aplica a los form dentro de la aplicacion y no a esta por sobre otra (en este caso el browser)
tienes que usar la api de windows
How to make form topmost to the application only?
para mostrar la app sobre otra, si tienes el handler del proceso podrias utilzarlo
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP miércoles, 15 de noviembre de 2017 12:40
- Propuesto como respuesta Juan MondragónModerator jueves, 16 de noviembre de 2017 23:52
- Marcado como respuesta Pablo RubioModerator lunes, 20 de noviembre de 2017 15:34
Todas las respuestas
-
Claro la falla se debe a la demora en abrir el navegador, coloca una pausa al programa antes de darle el foco
System.Threading.Thread.Sleep(1000)
Con esto debe ser suficiente para que quede en pila luego de la carga de la página, esto si quieres que este por encima del navegador, puedes optar por this.Focus, this.Activate() , harán que se coloque nuevamente por soble la página, en el caso puntual de que lo que quieras que solamente quede activo en la barra de tareas deberías minimisarlo y luego de la pausa colocar this.Activate() de esta manera quedará seleccionado en la barra de tareas pro minimisado
Saludos
- Propuesto como respuesta Jorge TurradoMVP miércoles, 15 de noviembre de 2017 8:29
-
hola
recuerda que el Topmost aplica a los form dentro de la aplicacion y no a esta por sobre otra (en este caso el browser)
tienes que usar la api de windows
How to make form topmost to the application only?
para mostrar la app sobre otra, si tienes el handler del proceso podrias utilzarlo
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP miércoles, 15 de noviembre de 2017 12:40
- Propuesto como respuesta Juan MondragónModerator jueves, 16 de noviembre de 2017 23:52
- Marcado como respuesta Pablo RubioModerator lunes, 20 de noviembre de 2017 15:34