我是编程世界的新手,我正在尝试创建一个使用函数创建按钮和标签等的表单。创建表单,但传递给按钮单击事件的函数未被传递正确。例如,我有一个创建按钮的功能....
function new_btn ($name, $parent, $x, $y, $l, $h, $text, $onClick){
$object = New-Object System.Windows.Forms.Button
$object.Location = New-Object System.Drawing.Point($x, $y)
$Object.Size = New-Object System.Drawing.Size($l, $h)
$Object.Text = $text
$object.add_Click({$onClick})
New-Variable $name -Value $object -Scope global
(Get-Variable $parent).Value.Controls.Add((Get-Variable $name).value)
}
然后,我想要在按钮点击上运行该功能.....
function msg {
[System.Windows.Forms.MessageBox]::Show("We are proceeding with next step.")
}
然后我调用该函数并将其输入参数.......
new_btn getdbslist tab1 20 50 69 23“获取数据库”msg
这会按预期生成按钮并将其添加到tab1,但点击事件不起作用,根本不会发生任何事情。任何帮助将非常感谢!
答案 0 :(得分:1)
你只是传递一个字符串。而是传递一个脚本块:
new_btn getdbslist tab1 20 50 69 23 'Get DBs' {
[System.Windows.Forms.MessageBox]::Show("We are proceeding with next step.")
}
在您的new_btn
函数中,您可能只需要使用
$object.add_Click($onClick)
如果你真的想传递一个字符串,那么你可能需要使用以下内容:
$object.add_Click({ & $onClick })