La prévention Winform agrandie?
Je veux éviter que mon application de bureau agrandie. Elle ne doit pas devenir agrandie par tous les moyens - le en double-cliquant sur la barre de titre, ou en cliquant sur Windows + flèche vers le Haut sur le clavier, etc.
-> j'ai désactiver l' MaximizeBox et MinimizeBox.
-> j'ai aussi mis le MaximumSize et MinimumSize pour ma WinForm
Encore quand j'appuyez sur la touche Windows + Haut flèche, ma victoire formulaire Déplace vers le haut à gauche de l'écran, je veux dire qu'il obtient agrandie.
Alors merci de me dire de toute façon à empêcher cette chose qui se passe...
- Envisager la création d'une autre question à poser à votre deuxième question sur les raccourcis
- Je l'ai aussi fait, et j'ai trouvé tout cela sur google. Certaines propriétés que vous avez besoin de mettre à false, certains vous avez besoin pour remplacer.
Vous devez vous connecter pour publier un commentaire.
Il y a en fait deux choses complètement distinctes à l'œuvre ici. Accordé, ils regardent essentiellement les mêmes d'un point de vue fonctionnel, mais à partir d'une mise en œuvre-point de vue du modèle (comme Windows lui-même, naturellement, de l'utilisation), ils ne sont pas liés.
Que d'autres ont répondu, vous pouvez empêcher votre forme agrandie par l'établissement de ses
MaximizeBox
propriétéfalse
. Cela supprime leWS_MAXIMIZEBOX
style sur le formulaire de la fenêtre sous-jacente, ce qui empêche le gestionnaire de fenêtre de permettre à la fenêtre pour être maximisée. Il désactive la zone agrandissement sur la légende de la fenêtre de la barre (ce qui est entre la boîte de minimiser et fermer la boîte), désactive le "Optimiser" option dans la fenêtre de menu système, et toutes les autres méthodes de maximiser une fenêtre que j'ai peut-être oublié.Cependant, cela n'a rien à voir avec le Win+↑ raccourci clavier, qui appelle Aero Snap le même que l'on devrait glisser la fenêtre à la magie de la position assis les bords de l'écran. Le gestionnaire de fenêtre, que ce soit en raison d'un bug ou une fonctionnalité d'Aero Snap, encore permet effectivement de "maximiser" les fenêtres qui ne devrait pas autrement être maximisée. Réglage de la
MaximizeBox
propriété n'affecte pas cela, donc si vous voulez vraiment pour empêcher l'utilisateur de modifier la taille de la fenêtre de cette façon, vous aurez besoin de désactiver Aero Snap est l'effet sur votre fenêtre.Malheureusement, il n'y a pas de méthode (au moins, pas à ma connaissance) de par programmation désactiver Aero Snap par la fenêtre ou par processus (voir aussi cette question relative à la). Si l'utilisateur a Aero Snap est activée, vous pouvez supposer qu'ils veulent que le comportement et les applications ne sont pas censés toucher. La seule chose que vous pouvez faire est de désactiver complètement le redimensionnement de votre fenêtre. En WinForms, vous ne faites que par le réglage de la
FormBorderStyle
propriété à l'une des opérations suivantes:FormBorderStyle.FixedSingle
,FormBorderStyle.Fixed3D
, ouFormBorderStyle.FixedDialog
. Si vous voulez toujours votre fenêtre redimensionnable dans d'autres façons, vous aurez besoin d'écrire du code pour gérer manuellement, ce qui n'est pas particulièrement une tâche facile.Ainsi, je vous encourage très soigneusement considérer si c'est vraiment nécessaire. Tous les autres non-maximizable windows accomplir cela en définissant simplement la
MaximizeBox
de propriété (ou de l'équivalent dans leur cadre d'INTERFACE graphique), ce qui signifie qu'ils peuvent encore être efficacement agrandie par Aero Snap. Si cela fonctionne pour tout le monde windows, y compris ceux qui font partie de Windows lui-même, il doit probablement travailler pour vous.La forme a une propriété appelée
MaximizeBox
- ensemble de ce faux.En ce qui concerne votre deuxième question, découvrez cette question et les réponses les meilleurs moyens à mettre en œuvre les raccourcis clavier dans les WinForms.
Cette ligne de code empêchera l'utilisateur de re-dimensionnement de la Fenêtre.
En plus de cela vous cacher/désactiver la zone agrandissement et que devrait faire ce que vous avez demandé.
Pour désactiver l'maximiser la case utiliser ce
Pour masquer l'maximiser la case utiliser ce ainsi
S'agrandir et Réduire sont définies sur false, les boutons disparaissent.
Réglage de la MaximumSize égale à la Taille (ou la taille) au moins s'arrête le windows de passer en plein écran. - Il encore s'aligne sur le coin en haut à gauche mais c'est toujours une fenêtre au moins et regarde, à droite, comme c'est Windows d'être stupide au lieu de votre programme.
Vous pouvez empêcher windows de claquer vers le coin supérieur gauche en définissant:
dans l'événement de déplacement de la forme.
Il est une propriété de la classe de Formulaire nommé "MaximumBox" vous devez définir la valeur False dans la fenêtre propriétés de votre forme... Cela va désactiver la forme agrandie par n'importe quel moyen... Aussi, si vous voulez contrôler votre formulaire de tailles, vous pouvez travailler avec des propriétés telles que "MinimumSize, MaximumSize" de définir leurs valeurs, à votre discrétion, ou de créer un gestionnaire d'événements pour l'MaximumSizeChanged et MinimumSizeChanged événements...
Vous pouvez essayer de RegisterHotKey Win+si votre fenêtre ou votre application est activée et annuler l'inscription de cette chaude de la clé si elle est désactivée. Vous devez attraper la touche de raccourci et de retourner la valeur appropriée pour empêcher la poursuite du traitement.
Regarder
WM_ACTIVATEAPP
,WM_ACTIVATE
etWM_NCACTIVATE
. Le premier peut être utilisé si vous souhaitez désactiver la Win pour toutes vos fenêtres.Une chose que vous pouvez faire est de mettre le MaximumSize et MinimumSize de la même valeur mais pas 0,0.