在Powershell表单之间传递变量和函数

时间:2017-11-09 07:47:58

标签: winforms function powershell multiple-forms

我现在正在创建一个包含3个表单的多表单Powershell工具集。

  • mainForm.ps1 - GUI和功能
  • createForm.ps1 - 传递给createFunctions的纯GUI和事件处理程序
  • createFunctions.psm1 - 使脚本正常工作所需的功能

主窗体只包含基本骨架和运行创建脚本的导航。 创建表单将我的工具绘制到主窗体的一部分中。 createFunctions保存所需的功能。

我可以运行创建表单,然后从内部导入函数模块。

我似乎能够通过每个表单传递变量和函数,但是当我尝试从属性中调用函数时,我的问题出现了:

Button.add_click({ })

出于某种原因,我无法从任何事件处理程序运行一个函数(位于createFunctions中)。这是相同的:

Textbox.add_textchanged({})

我可以通过将完全相同的函数名称放在事件处理程序中来运行相同的函数(来自createFunctions)。 e.g:

#Doesn't run Test-function
function Set-Stage{
    $runFunctionBtn = New-Object Windows.Forms.Button
    #Ommitted formatting and behaviour.
    $runFunctionBtn.add_Click({Test-Function})
}
#Does run Test-Function
function Set-Stage{
    $runFunctionBtn = New-Object Windows.Forms.Button
    #Ommitted formatting and behaviour.
    $runFunctionBtn.add_Click({})
    Test-Function

}

经过几天的尝试和研究,我无法找到解决方案;我觉得我需要一个.parent或$ this向外移动一步。

模块实际上只包含函数,其中一个函数是Test-Function。

我希望我遗漏一些非常明显的东西。我看过一些叫做函数的Powershell工作室代码,但我试图学习Powershell,而不是GUI的现有命令。

0 个答案:

没有答案