Autor
|
Tema: Como evitar el minimizado de un formulario??? (Leído 13,114 veces)
|
TomaSs
Desconectado
Mensajes: 101
|
Pues eso, que quería saber si hay alguna manera de evitar el minimizado de un formulario, no quitar el botón de minimizar, sino evitar el minimizado de alguna manera, bien de alguna manera directa que lo evite, o detectando el momento en que sea minimizado y restaurándolo automáticamente.
Y claro, tampoco quiero un timer o un thread que esté constantemente comprobando si ha sido minimizado o no, porque eso es una chapuza tremenda...
Decir que, principalmente quiero esto para, en el momento que al pinchar en el icono de "mostrar escritorio", evitar que sea minimizado mi formulario.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
 
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Puedes suscribirte al evento SizeChanged del form y chequear el WindowState, algo así ... private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { } }
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
Gracias por responder. Pues la verdad que eso no funciona, porque ese evento si que se lanza cuando yo minimizo desde mi formulario, es decir, mediante el botón de minimizado, o bien haciendo this.WindowState = FormWindowState.Minimized;, pero si yo minimizo desde el botón de "mostrar escritorio", no lanza ese evento, ya que imagino que minimizará por medio de apis del sistema, y no llamando a eventos del propio formulario, por lo que no creo que pueda hacerse con ningún evento.
Tal vez solo sea posible haciendo api hooking o algo así, no se... A ver si alguien más puede aportar algo.
Gracias!
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
 
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Bien, el problema es que no presté tanta atención a la última oración, donde estaba lo más importante  El tema es que al clickear a "Mostrar escritorio" en realidad no se esta minimizando ni cambiando el tamaño de ninguna ventana, simplemente se esta trayendo el escritorio por sobre todas las demás. Lo que puedes hacer es cambiar la propiedad TopMost del form a true, no recuerdo si tiene una traducción, tengo el Visual en inglés  , formulario de nivel superior?  Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
Vale, perfecto, me has alumbrado bastante Es cierto que con topmost no lo oculta, de echo lo tenía en topmost pero dejaba de verlo y te explico porque, para ver si aún así podrías ayudarme un poco más. El tema es, que mi formulario (un formulario muy pequeñito y sin bordes) lo coloco sobre la barra de inicio, concretamente al lado del reloj, pero al pulsar en "mostrar escritorio", a pesar de estar mi formulario en topmost, coloca la barra de inicio sobre mi formulario, por eso dejaba de verlo, porque se queda por detrás de la barra. Sabes si podría hacer algo para que se quede siempre por encima de la barra de inicio? Así es como quiero que me quede mi formulario (el cuadrito verde)  y que a pesar de darle a mostrar escritorio se quede visible sobre la barra de inicio
|
|
« Última modificación: 20 Octubre 2012, 02:08 am por TomaSs »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
 
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Por desgracia no se me ocurre otra cosa  estoy probando y en mi caso si queda por sobre todo, incluso por sobre la barra de menú, pero de vez en cuando doy click en la barra y la ventana queda detrás, y ahí si no hay manera de traerla al frente  Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
Algo que se me a ocurrido hacer es, redimensionar la barra de inicio y dejarle un huequito a mi formulario, mas o menos así:  pero me he puesto a redimensionarla con movewindow y nada, parece ser que a la barra de inicio no se le puede cambiar el tamaño :S
|
|
|
En línea
|
|
|
|
seba123neo
|
queres hacer algo asi como los widget de windows. aca hay que usar magia negra  , podes combinar la propiedad TopMost y capturar el mensaje que ocurre cuando se minimiza y creo que funciona, este codigo evita el minimizar y tambien el mostrar escritorio de windows (tambien WINDOWS+M o WINDOWS+D). Imports System Imports System.Windows.Forms Public Class Form1 Private Const WM_SYSCOMMAND As Int32 = &H112 Private Const SC_MINIMIZE As Int32 = &HF020 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.TopMost = True End Sub Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_SYSCOMMAND Then If m.WParam.ToInt32() = SC_MINIMIZE Then Exit Sub End If MyBase.WndProc(m) End Sub Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged If Me.WindowState = FormWindowState.Minimized Then Me.WindowState = FormWindowState.Normal End If End Sub End Class
saludos.
|
|
|
En línea
|
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
gracias por tu respuesta seba, pero eso tampoco funciona, porque como dijo novlucker, no es que se minimice el formulario, sino que la barra de tareas lo tapa, sin mas. otra cosa que he hecho, ha sido incrustar mi formulario dentro del boton de "mostrar escritorio" con SetParent, y así nunca lo tapa la barra de tareas, ya que está dentro de ella, el problema que tiene esto es que al redibujarse el botón de mostrar escritorio, se borra el formulario hasta que pasas sobre el con el puntero o le haces un refresh para que lo redibuje, no se como se podría hacer para que hiciera refresh automáticamente, o que el propio botón de mostrar escritorio lo respete y no dibuje sobre el, no se si habrá algo...
|
|
« Última modificación: 20 Octubre 2012, 07:33 am por TomaSs »
|
En línea
|
|
|
|
Crazy.sx
Desconectado
Mensajes: 447
|
|
|
|
En línea
|
Destruir K. LOL
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como empezar un juego "minimizado"?¿
Juegos y Consolas
|
B@RTY
|
4
|
2,816
|
15 Agosto 2006, 01:01 am
por keldorn
|
|
|
Como utilizar swing de un formulario desde otro formulario???????
Java
|
h@lv@88
|
2
|
5,071
|
9 Junio 2008, 00:59 am
por h@lv@88
|
|
|
Como evitar un ataque DDoS y como experimentarlo en servidores reales?
Seguridad
|
Inspiron21
|
2
|
17,351
|
3 Septiembre 2010, 11:36 am
por Silici0
|
|
|
Minimizado no deseado en algunas aplicaciones
« 1 2 »
Windows
|
AsukaHamster
|
14
|
8,405
|
24 Marzo 2014, 20:01 pm
por dato000
|
|
|
Evitar se congele el formulario al hacer un for
« 1 2 »
.NET (C#, VB.NET, ASP)
|
P4nd3m0n1um
|
10
|
10,743
|
14 Mayo 2016, 22:40 pm
por Eleкtro
|
|