2009-07-13 13 views
44

Tengo un formulario que debe ser maximizado en VB.net. No quiero que el usuario pueda cambiar su tamaño o moverlo. ¿Cómo puedo hacer esto?¿Cómo evito que el usuario cambie el tamaño de un formulario?

+1

@Powerlord ¿Cómo sabes que no se trata de una especie de reproductor de películas o juego en el que * quieres * hasta el último píxel? –

+1

Microsoft proporciona un ejemplo completo como parte de su documentación para [Form.FormBorderStyle Property] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formborderstyle%28v=vs.110 % 29.aspx). – DavidRR

Respuesta

99

Establezca las propiedades resaltadas. Conjunto MaximimSize y MinimizeSize propiedades del mismo tamaño

enter image description here

+9

¡Verdaderamente una imagen vale más que mil palabras! – Martin

+1

Mostrar las ventanas de 2016 y 2017 por favor. todos los viejos están muertos. – YumYumYum

+0

@YumYumYum La única forma que encontré para hacer esto fue definirlo en el código cuando estaba lanzando el formulario –

2

Para evitar que los usuarios cambiar el tamaño, ajustar el FormBoderStyle a Fixed3D o FixedDialog desde la ventana de propiedades o de código

frmYour.BorderStyle = System.WinForms.FormBorderStyle.Fixed3D 

Y establecer la propiedad WindowState en maximizada, establecer las propiedades MaximizeBox y MinimizeBox a falso.

Para evitar que el usuario se mueva, anular WndProc

Protected Overrides Sub WndProc(ByRef m As Message) 
     Const WM_NCLBUTTONDOWN As Integer = 161 
     Const WM_SYSCOMMAND As Integer = 274 
     Const HTCAPTION As Integer = 2 
     Const SC_MOVE As Integer = 61456 

     If (m.Msg = WM_SYSCOMMAND) And (m.WParam.ToInt32() = SC_MOVE) Then 
      Return 
     End If 

     If (m.Msg = WM_NCLBUTTONDOWN) And (m.WParam.ToInt32() = HTCAPTION) Then 
      Return 
     End If 

     MyBase.WndProc(m) 
    End Sub 
+0

wow ¿cuál es el significado de todos esos enteros? –

+0

constantes para pasar a la API de Windows - cada número entero representa un comando de Mensaje de Windows y el correspondiente parámetro – amazedsaint

+0

Esto funciona mejor, evita que el usuario arrastre el formulario a otro monitor también (un problema que tengo, no estoy seguro de si es ganador 8 o múltiple monitores que causan esto). Mucky (no es culpa de los que responden), pero la respuesta es correcta. –

0

Puede eliminar la interfaz de usuario para controlar esto con:

frmYour.MinimizeBox = False 
frmYour.MaximizeBox = False 
2

Ajuste el estilo de inicio de la ventana maximizada. Luego, esconda los botones minimizar y maximizar.

4
//Set fixed border 
yourForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D 

//Set the state of your form to maximized  
yourForm.WindowState = FormWindowState.Maximized 

//Disable the minimize box and the maximize box 
yourForm.MinimizeBox = False 
yourForm.MaximizeBox = False 
-1

Establezca el tamaño mínimo y máximo de forma en los mismos números. No mostrar los botones mínimo y máximo.

+0

Como dijo @LarsTech anteriormente, aún puede extraer y cambiar el tamaño del formulario manualmente en este escenario, por lo que esta no es la respuesta completa, tal vez parte, pero no evitaría el problema en su totalidad –

1

añadir algo de código al evento Form Load:

me.maximumsize = new size(Width, Height) 
me.minimumsize = me.maximumsize 
me.maximizebox = false 
me.minimizebox = false 

Ejemplo: Para una altura de Forma y anchura de 50 píxeles cada una:

me.maximumsize = new size(50, 50) 
me.minimumsize = me.maximumsize 
me.maximizebox = false 
me.minimizebox = false 

Tenga en cuenta que la configuración maximumsize y minimumsize a t El mismo tamaño que se muestra aquí evita el cambio de tamaño del formulario.

-5

Hay una opción en vb.net que le permite hacer todo esto.

Set <code>lock = false</code> to <code>locked = true</code>

El usuario no será capaz de cambiar el tamaño de la forma o moverlo, aunque hay otras maneras, creo que este es el mejor.

+3

La propiedad bloqueada es "tiempo de diseño" -solo! –

-1

Simplemente cambie esta configuración en el Explorador de soluciones.

MaximizeBox = False 
MinimizeBox = False 

Las otras cosas como ControlBox, Bloqueado y FormBorderStyle son extra.

+2

'Las otras cosas como ControlBox, Locked y FormBorderStyle son adicionales. Si FormBorderStyle no está configurado en un estilo de tipo Fixed o None, el usuario puede cambiar el tamaño del formulario. – LarsTech

Cuestiones relacionadas