Powershell GUI(.NET 表单),按钮上的右键单击事件

Powershell GUI(.NET 表单),按钮上的右键单击事件

如何捕获按钮上发生的右键单击事件?我想在按钮收到右键单击时执行一些操作。以下是示例表单:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(400,400)
$form.StartPosition = "CenterScreen"

$button01 = New-Object System.Windows.Forms.Button
$button01.Location = New-Object System.Drawing.Size(100,100)
$button01.Size = New-Object System.Drawing.Size(100,100)
$button01.Text = "button01"
$button01.Add_Click({[System.Windows.MessageBox]::Show("Left click")})

$form.Controls.Add($button01)

$form.ShowDialog() | Out-Null

看完之后一些 文档,我在下面添加了以下内容$button01.Add_Click

$button01_MouseDown=[System.Windows.Forms.MouseEventHandler]{
    $_ = [System.Windows.Forms.MouseEventArgs]
    [System.Windows.MessageBox]::Show("$_.Button")
}

当我右键单击按钮时,没有MessageBox出现任何内容。

答案1

你可以这样做:

$button01.Add_MouseUP( {
        if ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right ) {
            [System.Windows.MessageBox]::Show("Rigth mouse up")}
        })

或者,您可以使用

$button01.Add_MouseDown(....)

您可以在这里找到 Button 类支持的所有事件:https://msdn.microsoft.com/en-us/library/system.windows.forms.button(v=vs.110).aspx

你可以用这种风格使用它:

$button01.Add_AutoSizeChanged(....)
$button01.Add_BackColorChanged(....)
$button01.Add_BackgroundImageChanged(....)
........

相关内容