2016-08-14 1 views
0

J'ai été la conception d'une interface graphique dans Powershell (jamais pensé que j'emploierais cette phrase) et, tout en regardant différentes sources en ligne, il existe différentes méthodes pour positionner les éléments de contrôle avec un formulaire.

Quand je commencer à me familiariser avec le cadre de base sur la façon de construire une forme simple, il montre ceci:

[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') 
$form = New-Object System.Windows.Forms.Form 

$button = New-Object System.Windows.Forms.Button 
$button.Top = 30 
$button.Left = 30 
$form.Controls.Add($button) 

Cependant, en regardant autour, je l'ai vu la plupart des endroits utilisent cette méthode:

[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') 
[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') 

$form = New-Object System.Windows.Forms.Form 

$button = New-Object System.Windows.Forms.Button 
$button.Location = New-Object System.Drawing.Size(30,30) 
$form.Controls.Add($button) 

Il semble accomplir exactement la même chose.

Différentes façons de faire la même chose est ce qui rend la programmation intéressante (pour moi, de toute façon). Ce que je voudrais savoir, c'est s'il y a une raison pour laquelle ce dernier est le plus souvent démontré et s'il y a une raison pour cela.

Merci.

Répondre

1

Oui, vous avez raison. A la fin, c'est exactement pareil. Les trois propriétés sont dérivées de system.windows.forms.control.


La documentation de Microsoft dit:

Control.Left: Obtient ou définit la distance, en pixels, entre le bord gauche du contrôle et le bord gauche de la zone cliente de son conteneur [... ] La valeur de propriété Left est équivalente à la propriété Point.X de la valeur de propriété Location du contrôle.

Control.Top: Obtient ou définit la distance, en pixels, entre le bord supérieur du contrôle et le bord supérieur de la zone client de son conteneur. [...] La valeur de la propriété Top est équivalente à la propriété Point.Y de la valeur de la propriété Location du contrôle.


Il est à vous ce que vous souhaitez utiliser dans un scénario spécifique. La seule vraie différence que je vois, c'est que pour définir l'emplacement, vous avez besoin d'un nouvel objet (type de valeur). Pour juste en haut ou à gauche, vous n'avez besoin que d'un [int].

+0

Génial! Cela ressemblait à System.Drawing.Size ($ control.Left, $ control.Top), mais Windows a tendance à conserver des outils et des méthodologies redondants pour une utilisation facile. – Rincewind