Bonjour,
Après avoir posté sur le forum Dotnet > Languages > VB, je me rends compte que ce problème est plutôt lié au WinForms alors je reposte mon message ici... Désolé pour ce doublon...
Dans une application, après une certaine action de l'utilisateur, je suis amené à ajouter des contrôles sur le formulaire (les uns en dessous des autres).
Histoire que ça reste joli, je resize le formulaire après l'ajout des contrôles et le recentre dans l'écran avec le code qui suit :
Mon problème est que, sur les écrans qui ne sont pas assez grand pour contenir le formulaire, l'instruction dans la boucle while cesse d'avoir un effet sans pour autant générer une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub ResizeForm(ByVal bl_clean As Boolean) Try If bl_clean Then Me.Height = 203 Me.Top = CInt(My.Computer.Screen.Bounds.Height / 2 - Me.Height / 2) Else While splitTTC.Panel2.VerticalScroll.Visible Me.Height += 5 End While splitTTC.SplitterDistance = 55 Me.Top = CInt(My.Computer.Screen.Bounds.Height / 2 - Me.Height / 2) End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub
J'ai réalisé les tests sur 2 écrans différents.
Sur un écran dont la résolution est 1680*1050, aucun souci.
Sur un écran dont la résolution est 1280*800, la valeur de la propriété height ne va pas plus haut que 812... Après ça, la boucle continue à s'exécuter et passe bien sur l'instruction qui augmente la hauteur de 5 mais la valeur de la propriété ne change plus...
Je suis tout à fait d'accord que je dois modifier mon code pour gérer les cas où l'écran est trop petit pour contenir le formulaire car de toute façon, j'uarais un problème sur l'instruction où je le recentre (car je serais hors de l'écran). Mais cela n'empêche, je ne comprends pas pourquoi la valeur n'augmente plus.
J'ai été voir dans la msdn pour voir s'il y avait une limite ou qqch du genre mais je n'ai rien trouvé.
Quelqu'un aurait-il des infos sur le sujet ?
Merci d'avance.
Partager