Le contrôle parent MDI par défaut comporte une grande zone "Bureau" qui peut afficher plusieurs formulaires enfants. Les utilisateurs peuvent faire glisser des formulaires vers le bord de cette zone de bureau afin que la majeure partie du formulaire enfant ne soit pas affichée. (Une barre de défilement apparaît alors dans le parent MDI) Je n'aime pas cette fonctionnalité. Existe-t-il un moyen de verrouiller le bord de la zone de bureau pour que les formes enfants restent entièrement visibles?Winforms MDI "Desktop" Zone Boundry
4
A
Répondre
3
- Désactiver la fenêtre MDI scrollbars
- Accrocher l'événement OnMove de toutes les fenêtres de l'enfant. Si la fenêtre est déplacée à l'extérieur de la limite, remettez-la en place le long des x et y jusqu'à ce qu'elle revienne à l'intérieur du parent.
3
Pour clarifier, ce que vous dites est la zone "bureau" du client MDI est la zone cliente.
Vous pouvez gérer les gestionnaires d'événements de redimensionnement/déplacement des formulaires enfants, puis redimensionner/restreindre le mouvement de l'enfant lorsqu'il dépasse les limites de la zone client MDI.
5
Le code que je l'habitude de mettre en œuvre la réponse que je choisi ci-dessus:
Public alreadyMoved As Boolean = False
Public Const HEIGHT_OF_MENU_STATUS_BARS As Integer = 50
Public Const WIDTH_OF_MENU_STATUS_BARS As Integer = 141
Private Sub Form_Move(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Move
If Not alreadyMoved Then
alreadyMoved = True
'If I'm over the right boundry, drop back to right against that edge
If Me.Location.X + Me.Width > _
MdiParent.ClientRectangle.Width - WIDTH_OF_MENU_STATUS_BARS Then
MyBase.Location = New System.Drawing.Point(_
(MdiParent.ClientRectangle.Width - Me.Width - _
WIDTH_OF_MENU_STATUS_BARS), MyBase.Location.Y)
End If
'If I'm over the bottom boundry, drop back to right against that edge
If Me.Location.Y + Me.Height > _
MdiParent.ClientRectangle.Height - HEIGHT_OF_MENU_STATUS_BARS Then
MyBase.Location = New System.Drawing.Point(_
MyBase.Location.X, (MdiParent.ClientRectangle.Height - _
Me.Height - HEIGHT_OF_MENU_STATUS_BARS))
End If
'If I'm over the top boundry, drop back to the edge
If Me.Location.Y < 0 Then
MyBase.Location = New System.Drawing.Point(MyBase.Location.X, 0)
End If
'If I'm over the left boundry, drop back to the edge
If Me.Location.X < 0 Then
MyBase.Location = New System.Drawing.Point(0, MyBase.Location.Y)
End If
End If
alreadyMoved = False
End Sub
Questions connexes
- 1. Taille/Emplacement de la zone client MDI de Winforms
- 2. Winforms + enfants MDI
- 3. Winforms zone de texte autoheight
- 4. Mdi forme assurer visible
- 5. Suppression du menu MDI par défaut d'un formulaire MDI Container lorsqu'un enfant MDI est agrandi
- 6. Java Desktop framework d'application
- 7. Autorité Regsvr32 et Desktop
- 8. Active Desktop Recovery
- 9. Répartition des MDI enfants dans un parent MDI
- 10. Utilisation de MDI MDI avec plusieurs fenêtres de niveau supérieur
- 11. boutons de contrôle multiples pour un enfant MDI maximisée dans .NET WinForms
- 12. Conception d'une nouvelle interface utilisateur pour une application WinForms MDI héritée
- 13. Menu parent MDI et menu enfant
- 14. WinForms | C# | AutoComplete au milieu d'une zone de texte?
- 15. C# MDI Event Help
- 16. Vérificateur d'orthographe MDI VB6.0
- 17. Managed DirectX9 MDI
- 18. Comment configurer un gestionnaire pour les événements de dragover/dragdrop dans la zone client MDI?
- 19. Formulaire enfant MDI Agrandir problème sur Vista
- 20. Windows Desktop Search via C#
- 21. Projet MDI Direct3D: MFC ou .NET?
- 22. MDI: nom du fichier sur l'onglet
- 23. Dessiner Cercle simple dans la boîte de liste en C# .Net Desktop Application
- 24. MDI Application minimiser/restaurer problème
- 25. Désactiver clavier Remote Desktop Client raccourci
- 26. événement Winforms ComboBox SelectedValueChange
- 27. Extension WinForms TextBox
- 28. Delphi MDI Application et la barre de titre des enfants MDI
- 29. Curseur d'attente indésirable dans l'application WinForms
- 30. Docking un formulaire sur un MDI
Voir mon code ci-dessous qui contient du code qui. – Jeff