【问题标题】:Powershell - Replace add_Click link on LinkLabelPowershell - 替换 LinkLabel 上的 add_Click 链接
【发布时间】:2022-08-04 23:25:48
【问题描述】:

我正在创建一个使用链接标签的 PowerShell GUI。我这个链接的代码是

$ExLinkLabel = New-Object System.Windows.Forms.LinkLabel
$ExLinkLabel.Location = New-Object System.Drawing.Size(15,130)
$ExLinkLabel.Size = New-Object System.Drawing.Size(150,20)
$ExLinkLabel.LinkColor = \"BLUE\"
$ExLinkLabel.ActiveLinkColor = \"RED\"
$ExLinkLabel.Text = \"Link Example\"
$ExLinkLabel.add_Click({[system.Diagnostics.Process]::start(\"https://google.com\")})
$Form.Controls.Add($ExLinkLabel)

现在说我想根据某些条件在代码中稍后将其更改为另一个网站,我尝试这样做:

$ExLinkLabel.add_Click({[system.Diagnostics.Process]::start(\"https://yahoo.com\")})

现在有两个链接打开的问题,谷歌和雅虎。

有没有办法清除或只是用我的新链接替换第一个链接?

谢谢

  • 那么为什么不将 url 放在一个变量中,该变量根据您要实现的条件获取其值呢?然后在Add_Click({..}) 事件处理程序中你可以把[system.Diagnostics.Process]::start($script:MyUrlVariable)

标签: powershell


【解决方案1】:

使用.add_<EventName>() 方法调用添加事件处理程序就是这样做的:它添加一个额外的事件处理程序,其中可能有很多。

为了代替事件处理程序,您必须首先消除它的旧化身为.remove_<EventName>(),然后添加新的化身.add_<EventName>()

为此,您必须将原始化身存储在多变的您可以稍后传递给.remove_EventName>() 调用:

$currEventHandler = { Start-Process https://google.com }
$ExLinkLabel.add_Click($currEventHandler)

# ...

# Remove the current event handler...
$ExLinkLabel.remove_Click($currEventHandler)
# ... and add the new one:
$currEventHandler = { Start-Process https://yahoo.com }
$ExLinkLabel.add_Click($currEventHandler)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多