Redimmentionner une control qu'on a créé

Contenu du snippet

ce code peut-être porter sous VB6 aussi, il permet de créer un control et de pouvoir le redimentionner automatiquement.

Je m'explique, j'ai créé un calendrier de toute pièce pour une application (désoler, je peux pas dire c'est quoi). Quand j'ajoute mon controle sur une forme, il va se redimentionner automatiquement sur la grandeur que je lui ai donner.

Si je le redimentionne en mode Desing toujours, il va aussi se redimentionner à chaque fois.

oki, ça quand même un peu lourd, puisqu'il fad un bon tableau pour le faire, sauf que ça fonctionne à la perfection.

Source / Exemple :


'on doit déclarer 2 type

    Private Structure Position
        Public left As Long
        Public top As Long
        Public height As Long
        Public Width As Long
    End Structure

    Private Structure Item
        Public Form As Position
        Public element() As Position
    End Structure

'puis une variable

Dim formulaire As Item

'**********************************************

'à la toute fin, dans le Private Sub InitializeComponent(), ajouté un appel à un Sub que je vais appeller "initialiser"

'Dans initialiser, on va retrouver ceci, pour connaitre toute les position des object au départ et connaitre le grandeur de la form de départ

ReDim formulaire.element(Me.Controls.Count - 1)

        For i = 0 To Me.Controls.Count - 1
            formulaire.element(i).height = Me.Controls(i).Height
            formulaire.element(i).left = Me.Controls(i).Left
            formulaire.element(i).top = Me.Controls(i).Top
            formulaire.element(i).Width = Me.Controls(i).Width
        Next i

'**********************************************

pour terminer faut Overriter le sub Onresize de la form. Ça va faire une proportion sur la grandeur de la form de départ et sa nouvelle dimention, puis ça va repositionner tout les control par la suite. 

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
        Dim i As Integer
        Dim x_pourcentage As Double
        Dim y_pourcentage As Double

        x_pourcentage = formulaire.Form.Width / Me.Width
        y_pourcentage = formulaire.Form.height / Me.Height

On Error Resume Next

        For i = 0 To Me.Controls.Count - 1
            Me.Controls(i).Height = formulaire.element(i).height / y_pourcentage
            Me.Controls(i).Top = formulaire.element(i).top / y_pourcentage

            Me.Controls(i).Width = formulaire.element(i).Width / x_pourcentage
            Me.Controls(i).Left = formulaire.element(i).left / x_pourcentage
        Next i
    End Sub

Conclusion :


Attention, il ne faut pas avoir de Panel, sinon il faudra modifier un peu le code, puisque les item mis au un Panel ne se trouve pas sur la form, mais sur le panel.

Désoler encore de pas avoir mis de source, mais j'ai pas le droit de la diffuser, saufque c,est pas extrêment compliqué à faire

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.