PowerShell 中的 Windows 窗体事件 - PowerShell 中的 Sender 和 EventArgs

Rez*_*aei 5 c# powershell events winforms

如何在 PowerShell 中正确处理 Windows 窗体控件的事件并使用SenderEventArgs

在 PowerShell 中遵循 C# 代码的等价物是什么?

button.MouseClick += (sender, e) => {
    MessageBox.Show($"{((Control)sender).Name} \n {e.Location}");
};
Run Code Online (Sandbox Code Playgroud)

Rez*_*aei 7

要正确处理Windows窗体的事件控制PowerShell和利用的SenderEventArgs您可以使用下列选项:

  • 脚本时钟的定义sendere参数
  • 使用$this$_变量

脚本块的定义sendere参数

就像 C# 中的 lambda 事件处理程序一样,您可以param($sender,$e)为脚本块定义:

$button.Add_MouseClick({param($sender,$e)
    [System.Windows.Forms.MessageBox]::Show(" $($sender.Name) `n $($e.Location)")
})
Run Code Online (Sandbox Code Playgroud)

使用$this$_变量

$this是事件的发送者,$_是事件参数:

$button.Add_MouseClick({
    [System.Windows.Forms.MessageBox]::Show(" $($this.Name) `n $($_.Location)")
})
Run Code Online (Sandbox Code Playgroud)