2016-08-14 1 views
0

Ich habe eine GUI in Powershell entworfen (habe nie gedacht, dass ich diesen Satz verwenden würde) und, während Sie verschiedene Quellen online betrachten, gibt es verschiedene Methoden zum Positionieren von Control Items mit einem Formular.

Als ich mich mit dem Grundgerüst beginnen vertraut gemacht, wie eine einfache Form zu bauen, zeigt dies:

[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) 

Allerdings sah sich um, ich habe gesehen, die meisten Orte dieser Methode:

[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) 

Es scheint genau dasselbe zu erreichen.

Verschiedene Möglichkeiten, das Gleiche zu tun, machen die Programmierung interessant (für mich sowieso). Was ich gerne wissen würde, ist, ob es einen Grund gibt, warum Letzteres häufiger demonstriert wird und ob es einen Grund dafür gibt.

Danke.

Antwort

1

Ja, Sie haben Recht. Am Ende ist es genau so. Alle drei Eigenschaften werden von system.windows.forms.control abgeleitet.


Die Dokumentation von Microsoft sagt:

Control.Left: Ruft den Abstand in Pixeln zwischen dem linken Rand des Steuerelements und dem linken Rand seines Containers Client-Bereich [... ] Der Wert der Eigenschaft Left entspricht der Eigenschaft Point.X des Werts der Eigenschaft Location des Steuerelements.

Control.Top: Ruft den Abstand in Pixel zwischen der Oberkante des Steuerelements und der Oberkante des Clientbereichs des Containers ab oder legt diesen fest. [...] Der Wert der Eigenschaft Top entspricht der Eigenschaft Point.Y des Werts der Eigenschaft Location des Steuerelements.


Es liegt an Ihnen, was Sie in einem bestimmten Szenario verwenden möchten. Der einzige wirkliche Unterschied, den ich sehe, ist, dass für das Setzen des Standortes ein neues Objekt (Werttyp) benötigt wird. Um nur oben oder links zu setzen, brauchen Sie nur ein [int].

+0

Super! Es sah aus wie System.Drawing.Size ($ control.Left, $ control.Top) war wahrscheinlich, aber Windows hat eine Tendenz, redundante Tools und Methoden für die Benutzerfreundlichkeit zu halten. – Rincewind

Verwandte Themen