我正在尝试创建一个返回各种表单对象的函数。例如标签。但是我无法实现同样的目标。
我的代码如下所示:
function add_label([String]$label_text, [Int]$label_location_x, [Int]$label_location_y, [Int]$lable_size) {
$label = New-Object System.Windows.Forms.Label
$label.AutoSize = $true
$label.Location = New-Object System.Drawing.Point($label_location_x,$label_location_y)
$label.Size = New-Object System.Drawing.Size($lable_size,20)
$label.Text = $label_text
$label
}
$label_product = add_label("Product: ", $label_product_location, 20, $LableSize)
$GroupBoxSetting.Controls.Add($label_product)
它不会抛出任何错误,但不会显示标签。相反" product: 30 20 50
"显示在GUI而不是$groupBoxSetting
文本。
我想知道,有没有办法创建一个返回Forms对象的函数,这样我们就不必为每个Forms对象一次又一次地编写相同的代码块。
答案 0 :(得分:1)
您正在调用您的函数,powershell不会使用参数周围的括号。
这样做会导致括号内的所有内容作为单个对象发送到第一个参数。
您可以使用命名参数,这很容易分辨传递给哪个参数:
add_label -label_text "Product: " -label_location_x $label_product_location -label_location_y 20 -lable_size $LableSize
或者位置参数,如果你不知道函数参数那么可以输入更少但更难理解:
add_label "Product: " $label_product_location 20 $LableSize
有关详细信息,请参阅about_parameters。