visual ventanas ventana una tamaño studio que permitir maximizar maximicen las formulario evitar deshabilitar cerrar boton bloquear c# winforms minimize

una - evitar que las ventanas se maximicen c#



¿Cómo deshabilitar el botón de minimizar en C#? (8)

Coloque este código en el evento Resize de su formulario:

if (this.WindowState == FormWindowState.Minimized) { this.WindowState = FormWindowState.Normal; }

Esto hará que su formulario no sea minimizable (EXENCIÓN DE RESPONSABILIDAD: No pretendo alterar el comportamiento estándar de Windows de esta manera).

En mi aplicación, necesito oscurecer temporalmente el botón de minimizar del formulario principal. ¿Alguna idea de cómo se puede lograr esto? No me importa hacer p / invocaciones a Win32 dlls.

Editar: oscilar hacia afuera el botón minimizar sería la solución preferida, pero ¿hay alguna otra forma de evitar que la forma se minimice?


La respuesta de Coincoin es correcta. MinimizeBox también está disponible como una propiedad en la ventana de propiedades del diseñador.

@Kevin: Si bien aprecio el sentimiento, esa no siempre es una respuesta válida. Si la aplicación muestra un cuadro de diálogo modal creando una nueva instancia de un Formulario y luego llamando a .ShowDialog (), no desea que el usuario minimice ese Formulario, porque entonces todas las entradas en el subproceso principal de la interfaz de usuario están bloqueadas hasta el estado modal de ese formulario está satisfecho. El usuario podría hacer clic en el formulario principal y obtener el sonido "no molesto" de Windows y no saber qué hacer.


No lo hagas No te metas con mis ventanas. Ellos son míos, no tuyos. Es mi computadora y si quiero minimizarla, debería ser capaz de hacerlo. No puedo pensar, y nunca me han dado, una buena razón para hacer esto.


Solo haz MinimizeBox = falso; en el código de tu formulario.


También puede implementar el control del evento Minimizar para cancelar el comando


form.MinimizeBox = false;

o si en el alcance del formulario

MinimizeBox = false;


Leí tu comentario sobre mi respuesta y pude buscar una solución más completa para ti. Ejecuté esto rápidamente y parecía tener el comportamiento que deseabas. En lugar de derivar sus formas de win de Form, proceda de esta clase:

using System; using System.Windows.Forms; using System.ComponentModel; namespace NoMinimizeTest { public class MinimizeControlForm : Form { private const int WM_SYSCOMMAND = 0x0112; private const int SC_MINIMIZE = 0xf020; protected MinimizeControlForm() { AllowMinimize = true; } protected override void WndProc(ref Message m) { if (!AllowMinimize) { if (m.Msg == WM_SYSCOMMAND) { if (m.WParam.ToInt32() == SC_MINIMIZE) { m.Result = IntPtr.Zero; return; } } } base.WndProc(ref m); } [Browsable(true)] [Category("Behavior")] [Description("Specifies whether to allow the window to minimize when the minimize button and command are enabled.")] [DefaultValue(true)] public bool AllowMinimize { get; set; } } }

Podría hacer un poco más si quisiera poder decidir si se permite minimizar en el momento en que se envía el clic, por ejemplo:

using System; using System.Windows.Forms; using System.ComponentModel; namespace NoMinimizeTest { public class MinimizeControlForm : Form { private const int WM_SYSCOMMAND = 0x0112; private const int SC_MINIMIZE = 0xf020; protected MinimizeControlForm() { } protected override void WndProc(ref Message m) { if (m.Msg == WM_SYSCOMMAND) { if (m.WParam.ToInt32() == SC_MINIMIZE && !CheckMinimizingAllowed()) { m.Result = IntPtr.Zero; return; } } base.WndProc(ref m); } private bool CheckMinimizingAllowed() { CancelEventArgs args = new CancelEventArgs(false); OnMinimizing(args); return !args.Cancel; } [Browsable(true)] [Category("Behavior")] [Description("Allows a listener to prevent a window from being minimized.")] public event CancelEventHandler Minimizing; protected virtual void OnMinimizing(CancelEventArgs e) { if (Minimizing != null) Minimizing(this, e); } } }

Para obtener más información acerca de esta notificación de ventana, consulte el artículo de MSDN al respecto .


simplemente establece la propiedad MinimizeBox de tu formulario en falso. esto desactivará el botón de minimizar, pero otros botones permanecerán funcionales.