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 :

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
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.

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.