57 votes

Comment empêcher un formulaire d'être redimensionné par l'utilisateur ?

J'ai un formulaire qui doit être maximisé en VB.net. Je ne veux pas que l'utilisateur puisse modifier sa taille ou le déplacer. Comment puis-je le faire ?

1 votes

@Powerlord Comment savez-vous que ce n'est pas une sorte de lecteur de film ou de jeu où vous veulent jusqu'au dernier pixel ?

1 votes

Microsoft fournit un exemple complet dans le cadre de sa documentation sur l'application Propriété Form.FormBorderStyle .

119voto

Jim Lahman Points 826

Définissez les propriétés mises en évidence. Définissez les propriétés MaximSize et MinimizeSize à la même taille.

enter image description here

13 votes

Une image vaut vraiment mille mots !

1 votes

Montrez la fenêtre 2016 et 2017 s'il vous plaît. tous les anciens sont morts.

0 votes

@YumYumYum le seul moyen que j'ai trouvé pour faire cela était de le définir dans le code au moment où je lançais le formulaire.

4voto

amazedsaint Points 5712

Pour empêcher les utilisateurs de redimensionner, définissez le FormBoderStyle sur Fixed3D ou FixedDialog dans la fenêtre des propriétés ou dans le code.

frmYour.BorderStyle = System.WinForms.FormBorderStyle.Fixed3D

Et définissez la propriété WindowState sur Maximized, définissez les propriétés MaximizeBox et MinimizeBox sur false.

Pour empêcher l'utilisateur de se déplacer, il faut remplacer 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 votes

Constantes à transmettre à l'API Windows - chaque entier représente une commande Windows Message et le paramètre correspondant

0 votes

C'est ce qui fonctionne le mieux, et cela empêche l'utilisateur de faire glisser le formulaire vers un autre moniteur également (un problème que j'ai, je ne sais pas si c'est win 8 ou plusieurs moniteurs qui causent cela). C'est compliqué (ce n'est pas la faute de la réponse), mais la réponse est correcte.

4voto

Francis B. Points 4109
//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

2voto

NYSystemsAnalyst Points 6197

Définit le style de démarrage de la fenêtre comme maximisé. Ensuite, cachez les boutons de réduction et d'agrandissement.

1voto

Rowland Shaw Points 22860

Vous pouvez supprimer l'interface utilisateur pour contrôler cela :

frmYour.MinimizeBox = False
frmYour.MaximizeBox = False

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X