我一直在Powershell中设计GUI (从未想过我会使用这句话),并且,在查看不同的在线资源时,有不同的方法可以在表单中定位控件项。
当我第一次开始熟悉如何构建一个简单表单的基本框架时,它显示如下:
[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)
它似乎完成了完全相同的事情。
用不同的方法做同样的事情是编程有趣的地方(至少对我来说)。我想知道的是,为什么后者更常见,是否有一个原因,如果有一个原因。
谢谢。
你是对的。最后是完全一样的。这三个属性都派生自system.windows.forms.control。
微软的文档说:
控制。Left:获取或设置控件的左边缘与其容器的客户端区域的左边缘之间的距离(以像素为单位)。Left属性值相当于Point。控件的Location属性值的X属性。
控制。Top:获取或设置控件的上边缘与其容器的客户端区域的上边缘之间的距离(以像素为单位)。[…Top属性值相当于Point。控件的Location属性值的Y属性。
在特定的场景中使用什么取决于您。我看到的唯一真正的区别是,对于设置Location,您需要一个新的对象(值类型)。如果只是设置top或left,你只需要一个[int].