Documentation Française

Convert-Form

D’après une idée originale de Jean-Louis, Robin Lemesle et Arnaud Petitjean. La version d’origine a été publiée sur le site PowerShell-Scripting.com.

Je tiens à remercier Sébastien Doeraene pour son aide sur les expressions régulières.

Testé avec PowerShell V4 sous Windows Seven x64 et Visual Studio 2010.

Ce module permet de convertir les déclarations de création d’une WinForm C# en un script PowerShell. Le fichier source est un fichier xxx.Designer.cs, créé à l’aide de Visual Studio (toutes versions).

Télécharger la version gratuite de Visual Studio Express 2012 pour Windows Desktop.

Sommaire

 

Installation du module

Recopiez les fichiers dans un de vos répertoires de Module.

Convertir un fichier Winform

Une fois le module ConvertForm chargé, vous pouvez vous placez dans le répertoire du projet Winform

cd C:\VisualStudioPath\ProjetPath
Convert-Form -Path .\Form1.Designer.cs

Le fichier .PS1 généré portera le même nom que le fichier designer, pour cet exemple ce sera 'Form1.ps1'.

Vous pouvez également indiqué un répertoire différent à l'aide du paramètre -Destination :

Convert-Form -Path C:\VisualStudioPath\ProjetPath\Form1.Designer.cs  cd -Destination C:\Temp\TestFrm

Une fois le script généré (Form1.ps1), exécutez-le et corrigez les erreurs éventuelles. Il peut y en avoir, car bien que de nombreux objets graphiques soient supportés tous les cas d’utilisation de leurs propriétés n’ont pas été testés. La syntaxe du script est vérifiée lors de la création, mais elle ne garantit pas l’exécution correcte du script.

Comment répercuter les modifications du fichier Designer ?

Un projet Winform ne se crée pas en une seule opération, dans le cas où vous modifiez votre projet Winform vous serez amené à régénérer un script PowerShell.


Le problème maintenant est de reporter les modifications de ce nouveau script dans l'ancien script, pour ce faire l'outil gratuit WinMerge vous facilitera la tâche.

Pensez toutefois à préciser un nouveau nom différent de script de l’ancien et à ne pas utiliser le paramètre –Force qui remplace le fichier existant sans demander de confirmation.

Par exemple la recopie d’écran suivante affiche la différence entre les deux versions d’un script utilisant le même projet Winform. Les nouvelles lignes concernant l’ajout d’un nouveau bouton peuvent facilement être répercutées du nouveau script vers l’ancien.

Coder les événements des composants graphiques

Création d’un gestionnaire d’événement

Voici la déclaration de la signature d’une fonction gérant un événement d’une WinForm :

function OnFormClosing_Form1()


Dans la portée du code de la fonction le paramètre $this est égal au paramètre sender (object) du C#. Il référence l’objet déclenchant l’événement.

Le paramètre $_ est égal au paramètre e (eventarg) du C#. Il contient des informations sur l’événement déclenché.


L’appel par le gestionnaire d’événement d’un composant, de la fonction gérant cet événement se fait de la manière suivante :

$Form1.Add_FormClosing( { OnFormClosing_Form1} )


OnFormClosing_Form1 est le nom de la fonction à appeler. On ne renseigne aucun paramètre puisque PowerShell considère cette fonction comme respectant la signature du délégué de l’événement.


Dans la fonction OnFormClosing_Form1 la variable $this, sera égale à $Form1 et la variable $_ contiendra un objet descendant de la classe Eventargs.

Limites et composants supportés.

Last edited Feb 26, 2015 at 3:34 PM by LaurentDardenne, version 22