Principales respuestas
Restaurar formulario minimizado

Pregunta
-
Hola, como andan?
Mi duda es simple,pero antes aclaro que al formulario le di la propiedad FormBorderStyle = None
Y le añadi dos botones , uno para cerrarlo y otro para enviarlo a la barra de tareas.El codigo que se me ocurrio para enviarlo a la barra de tareas, es el siguiente
private void MinimizarForm(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized; // no se si no existe una mejor forma para hacerlo.
}Se oculta perfecto, el problema es que no se como levantarlo desde el icono en la barra de tareas!
Que solucion existe para esto?, estube buscando y no encontre nada relacionado..
Mas precisamente...
Como se llama el evento que se ejecuta al pulsar el icono?Muchas gracias!
- Editado LcsGrz miércoles, 3 de enero de 2018 4:30 Añadi mas datos
Respuestas
-
Buenos días,
El problema que tienes es que al minimizar un formulario sin borde t sin los botones maximizar y minimizar y cerrar estándar no se puede maximizar.
Bien aclarado el porqué ocurre. Lo único que se me ocurre es lo siguiente y tampoco puedo garantizar que funcione:
- Al pulsar minimizar el formulario en tu botón antes de minimizar ponle la propiedad BorderStyle = a algún valor diferente de none que permita que lo restaures desde la barra de tareas.
- Al canviar el estado de maximizado, minimizado o restaurado (Y NO SE SI EXISTE EL EVENTO) o quizás al cambiiar de tamaño (EN EL EVENTO) pon la condición:this.WindowState !=FormWindowState.Minimized (diferente de minimizado) entonces pon el form sin el borde otra vez.
Saludos.
- Propuesto como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 16:22
- Marcado como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 22:54
-
hola
>>Se oculta perfecto, el problema es que no se como levantarlo desde el icono en la barra de tareas
para esto necesitas implementar el NotifyIcon
How to Show NotifyIcon in Windows Forms Application Using C#
con este pondras el icono de la aplicacion al costado del reloj de la barra de tarea de windows
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 14:59
- Marcado como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 22:54
-
Veo vario problemas en lo que intentas, por ejemplo que al minimizar el form no establezcas la opacity a 1 ya que al maximizar(desde la barra de tareas) valdrá 0 y no se verá.
Otra cosa rara es la verificación que haces del timer al inicio si no esta enabled lo llamas de nuevo con lo que podría haber problemas.
Otra cosa si disparas el timer en el sizechange y luego en el timer provocas un cambio de tamaño creas concurrencia en los eventos.
No digo que sea la culpa de lo que pasa, pero creo que hay muchas posibilidades de que haya comportamientos no esperados por todo lo que te he comentado.
Te escribo un poco de pseudo código de como lo haría yom sin timers.
en el evento sizechanged:
si estoy normal
bucle for para hacerme visible de 0 a 1 en intervalos 0.3 (con thread.Sleep(300))
sino // estoy minimiazado
bucle for para hacerme invisile de 1 a 0 en intervalors de 0.3 (con thread.Sleep(300))
Ahora en el boton minimizar pones el el windowstate = minimize
Ahora el el boton maximizar pones el windowstate = maximize
En este punto te toca a ti decidir si hay que hacer transparencia o no al pasar de normal a maximizado o al reves, por que si es que no deberás controlar el estado anterior para evitar cambiar la opacidad en esos casos.
Saludos.
- Propuesto como respuesta Pablo RubioModerator viernes, 5 de enero de 2018 15:52
- Marcado como respuesta Pablo RubioModerator lunes, 8 de enero de 2018 15:34
-
hola
estas seguro que se ejecuta el MinimizarForm() ? si pones un breakpoint pasa por alli la ejecucion
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Pablo RubioModerator lunes, 8 de enero de 2018 15:34
Todas las respuestas
-
hola
>>Se oculta perfecto, el problema es que no se como levantarlo desde el icono en la barra de tareas
para esto necesitas implementar el NotifyIcon
How to Show NotifyIcon in Windows Forms Application Using C#
con este pondras el icono de la aplicacion al costado del reloj de la barra de tarea de windows
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 14:59
- Marcado como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 22:54
-
Buenos días,
El problema que tienes es que al minimizar un formulario sin borde t sin los botones maximizar y minimizar y cerrar estándar no se puede maximizar.
Bien aclarado el porqué ocurre. Lo único que se me ocurre es lo siguiente y tampoco puedo garantizar que funcione:
- Al pulsar minimizar el formulario en tu botón antes de minimizar ponle la propiedad BorderStyle = a algún valor diferente de none que permita que lo restaures desde la barra de tareas.
- Al canviar el estado de maximizado, minimizado o restaurado (Y NO SE SI EXISTE EL EVENTO) o quizás al cambiiar de tamaño (EN EL EVENTO) pon la condición:this.WindowState !=FormWindowState.Minimized (diferente de minimizado) entonces pon el form sin el borde otra vez.
Saludos.
- Propuesto como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 16:22
- Marcado como respuesta Pablo RubioModerator miércoles, 3 de enero de 2018 22:54
-
Muchas gracias a los 2 por responder, me di cuenta que fue un super error mio, en el que estaba probando el tema de la opasidad del form y en el evento SizeChanged le asignaba la opacidad a 0.. Disculpen, fui un tonto...
Pero volviendo al mismo tema, me di cuenta que puedo minimizar desde mis propios botones, pero no tocando el icono en la barra de tareas,no se si me explico bien...
Por ejemplo, ustedes estan usando el navegador para visualizar esta pagina, si quieren minimizarlo simplemente tocan en el boton _ y lo minimizan, o tambien pueden tocar en el icono que se encuentra en la barra de tareas y funciona exactamente igual.
Bueno en mi caso, no hace nada..
-
hola
estas seguro que se ejecuta el MinimizarForm() ? si pones un breakpoint pasa por alli la ejecucion
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Pablo RubioModerator lunes, 8 de enero de 2018 15:34
-
hola
estas seguro que se ejecuta el MinimizarForm() ? si pones un breakpoint pasa por alli la ejecucion
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
ArgentinaSi, segurisimo, observa (antes de esto se ejecuto la linea this.WindowState = FormWindowState.Minimized;)
El timer me ayuda con el tema de la transparencia, le estaba dando un efecto de FADE IN/OUT al form..
Y mi error era que cuando estaba testeando, nunca iniciaba el timer, si no que tocaba la trasnparencia directamente de ahi para testear...
Asi que podriamos decir que solucione el error que tenia.
//Agrego una foto de mi timer para el FADE, quizas a alguien mas le puede servir..//Creeria que la primera linea se puede descartar
El tema es el otro, no se si abrir otro hilo para preguntar sobre eso, o sigo en este.
Como dije, solo puedo minimizar desde mi propio boton de minimizar, que ejecuta la linea que mostre arriba en NEGRITA, pero tambien me gustaria poder hacerlo desde el icono de la aplicacion que se encuentra en la barra de tareas.
- Editado LcsGrz miércoles, 3 de enero de 2018 22:58 agrege mas info
-
Te cuento, el problema es el siguiente, si tienes las propiedades de :
MazimizeBox o MinimizeBox a false entonces no podrás actuar desde la barra de tareas.
Las has puesto a false para ocultar los botones de la barra de titulo. Lo que deberías hacer es ponerlas a true. I para ocultar los botones pon el controlBox del form a false. Así te funcionará todo bien.
-
Te cuento, el problema es el siguiente, si tienes las propiedades de :
MazimizeBox o MinimizeBox a false entonces no podrás actuar desde la barra de tareas.
Las has puesto a false para ocultar los botones de la barra de titulo. Lo que deberías hacer es ponerlas a true. I para ocultar los botones pon el controlBox del form a false. Así te funcionará todo bien.
Para ocultar la barra del titulo solamente le di la propiedad FormBorderStyle = None , y nada mas ,las otras dos que mencionaste estan en true :c
Ah porcierto, no funciona minimizar/maximizar desde el icono de la barra de tareas cuando el FORM esta abierto, si lo minimize antes, si funciona
- Editado LcsGrz miércoles, 3 de enero de 2018 23:53 edite info
-
Veo vario problemas en lo que intentas, por ejemplo que al minimizar el form no establezcas la opacity a 1 ya que al maximizar(desde la barra de tareas) valdrá 0 y no se verá.
Otra cosa rara es la verificación que haces del timer al inicio si no esta enabled lo llamas de nuevo con lo que podría haber problemas.
Otra cosa si disparas el timer en el sizechange y luego en el timer provocas un cambio de tamaño creas concurrencia en los eventos.
No digo que sea la culpa de lo que pasa, pero creo que hay muchas posibilidades de que haya comportamientos no esperados por todo lo que te he comentado.
Te escribo un poco de pseudo código de como lo haría yom sin timers.
en el evento sizechanged:
si estoy normal
bucle for para hacerme visible de 0 a 1 en intervalos 0.3 (con thread.Sleep(300))
sino // estoy minimiazado
bucle for para hacerme invisile de 1 a 0 en intervalors de 0.3 (con thread.Sleep(300))
Ahora en el boton minimizar pones el el windowstate = minimize
Ahora el el boton maximizar pones el windowstate = maximize
En este punto te toca a ti decidir si hay que hacer transparencia o no al pasar de normal a maximizado o al reves, por que si es que no deberás controlar el estado anterior para evitar cambiar la opacidad en esos casos.
Saludos.
- Propuesto como respuesta Pablo RubioModerator viernes, 5 de enero de 2018 15:52
- Marcado como respuesta Pablo RubioModerator lunes, 8 de enero de 2018 15:34