2016-08-14 53 views
0

我一直在設計在PowerShell中GUI(從來沒有想過我會用這句話)中,並在不同的來源看網上,有定位控制項目withing形式不同的方法。

當我第一次開始對如何建立一個簡單的形式,基本框架熟悉自己,就說明這一點:

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

然而,環顧四周,我所見到的大多數地方使用此方法:

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

這似乎完成同樣的事情。

不同的方法做同樣的事情是什麼使編程有趣的(對我來說,反正)。我想知道的是,如果有一個原因,爲什麼後者更普遍地表現出來,以及是否有原因。

感謝。

回答

1

是的,你是對的。最後它完全一樣。所有這三個屬性都來自system.windows.forms.control。


從微軟的文檔說:

Control.Left:獲取或設置的距離,以像素爲單位控制的左邊緣與其容器的工作區左邊緣之間[... ] Left屬性值等於控件的Location屬性值的Point.X屬性。

Control.Top:獲取或設置的距離,以像素爲單位控制的頂部邊緣和與其容器的工作區域的頂部邊緣之間。 [...] Top屬性值相當於控件的Location屬性值的Point.Y屬性。


這是給你,你想在一個特定的場景中使用了什麼。我看到的唯一真正的區別是設置Location需要一個新的對象(值類型)。只需設置頂部或左側,只需要一個[int]。

+0

真棒!它看起來很像System.Drawing.Size($ control.Left,$ control.Top),但Windows傾向於保留冗餘工具和方法以易於使用。 – Rincewind

相關問題