none
Poner en foco en mi programa en C# RRS feed

  • 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!

    miércoles, 15 de noviembre de 2017 1:14

Respuestas

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
    miércoles, 15 de noviembre de 2017 4:01
  • 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


    miércoles, 15 de noviembre de 2017 12:39