Redimensionnement automatique du contenu d'un form en vb.net

Description

Je me suis inspiré d'un code déposé en CSharp.NET par "bestmomo" (http://www.csharpfr.com/code.aspx?ID=33792), que j'ai transcrit en VB.NET, un peu amélioré, et surtout dans lequel j'ai corrigé un bug qui m'a fait tourner en bourrique pendant un moment.

Pour ceux qui iront fouiner dans le code
========================================

La version de "bestmomo" est basée sur la mémorisation (dans un tableau unidimensionnel de structures) des tailles, positions et fonts de la liste des controles contenus dans la Form, ainsi que de leurs conteneurs respectifs. Cela se fait par balayage, grâce à une fonction récursive, de l'arborescence des controles.

Ensuite, lorsque le Resize est demandé, l'arborescence de controles est à nouveau balayée, et l'ancienne taille stockée dans le tableau de structures est modifiée (augmentée ou diminuée) suivant la nouvelle taille de la Form.

Or je me suis aperçu, sur un exemple de Form contenant près de 200 controles, que l'arborescence des controles n'est pas forcément balayée dans le même ordre à deux instants très proches l'un de l'autre. D'où un décalage qui fait que les contrôles sont redimensionnés n'importe comment.

D'autre part, il y a un problème si la Form contient un DataGrid, car un Datagrid peut contenir lui-même des contrôles (TextBox, CheckBox, ou autre). Ma classe 'Resize' s'arrête au niveau de la Datagrid elle-même, sans tenir compte des éventuels contrôles qu'elle contiendrait.

La méthode 'DoResize' possède un argument vrai/faux qui permet d'adapter la taille de la police de chaque contrôle (sauf les Datagrids), et un autre argument qui permet d'affecter un coefficient multiplicateur à la police contenue dans les Datagrids, mais cette dernière fonctionnalité n'est pas au point. Mettre ce dernier à 0 pour l'ignorer.

J'ai fait des tests sur une Form contenant environ 200 contrôles (dont une dizaine de Datagrids), des panels, des groupBox, et conteneurs divers, répartis sur 5 onglets, pas de problèmes. Par contre, avec une telle quantité de controles, ca pédale un peu.

Sur un exemple plus simple tel que celui contenu dans le ZIP, ca marche nickel.

Voilà, I hope this will help you !

Codes Sources

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.