Ho un modulo che deve essere massimizzato in VB.net. Non voglio che l'utente possa modificarne le dimensioni o spostarlo. Come posso fare questo?Come impedire che un modulo venga ridimensionato dall'utente?
risposta
Impostare le proprietà evidenziate. Set MaximimSize e MinimizeSize proprietà della stessa dimensione
per impedire agli utenti di ridimensionare, impostare il FormBoderStyle a Fixed3D o FixedDialog dalla finestra delle proprietà o dal codice
frmYour.BorderStyle = System.WinForms.FormBorderStyle.Fixed3D
e impostare la proprietà WindowState a Ingrandita, impostare le proprietà MaximizeBox e MinimizeBox false.
per impedire all'utente di muoversi, ignorare 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
wow qual è il significato di tutti questi numeri interi? –
costanti per il passaggio a Windows API - ogni numero intero rappresenta un comando di messaggio di Windows e il parametro corrispondente – amazedsaint
Questo funziona meglio, impedisce all'utente di trascinare il modulo su un altro monitor (un problema che ho, non sono sicuro se è win 8 o multiplo monitor che causano questo). Mucky (non colpa dei rispondenti), ma la risposta è corretta. –
È possibile rimuovere l'interfaccia utente per controllare questo con:
frmYour.MinimizeBox = False
frmYour.MaximizeBox = False
Impostare lo stile di inizio finestra massimizzata. Quindi, nascondi i pulsanti minimizza e massimizza.
//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
Impostare le dimensioni min e max del modulo sugli stessi numeri. Non mostrare i pulsanti min e max.
Come detto in precedenza da @LarsTech, in questo scenario è ancora possibile tirare e ridimensionare il modulo in modo che questa non sia la risposta completa, forse parte di essa ma non impedirebbe il problema nel suo insieme –
Aggiungere codice all'evento Form Load:
me.maximumsize = new size(Width, Height)
me.minimumsize = me.maximumsize
me.maximizebox = false
me.minimizebox = false
Esempio: Per un'altezza Forma e larghezza di 50 pixel ciascuno:
me.maximumsize = new size(50, 50)
me.minimumsize = me.maximumsize
me.maximizebox = false
me.minimizebox = false
Si noti che l'impostazione maximumsize
e minimumsize
to t le stesse dimensioni mostrate qui impediscono il ridimensionamento del modulo.
C'è un'opzione in vb.net che ti permette di fare tutto questo.
L'utente non sarà in grado di ridimensionare la forma o spostarlo, anche se ci sono altri modi, questo credo sia il migliore.
La proprietà bloccata è "tempo di progettazione" -solo! –
Basta modificare queste impostazioni in Solution Explorer.
MaximizeBox = False
MinimizeBox = False
Le altre cose come ControlBox, Locked e FormBorderStyle sono extra.
'Le altre cose come ControlBox, Locked e FormBorderStyle sono extra. Se FormBorderStyle non è impostato su uno stile di tipo Fisso o Nessuno, l'utente può ridimensionare il modulo. – LarsTech
@Powerlord Come fai a sapere che non si tratta di una sorta di giocatore di cinema o gioco in cui si desidera * ogni pixel? –
Microsoft fornisce un esempio completo come parte della documentazione per [Proprietà Form.FormBorderStyle] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formborderstyle%28v=vs.110 % 29.aspx). – DavidRR