webdevqa.jp.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

somedocumentation を読んだ後、これを$button01.Add_Click行の下に追加しました。

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

ボタンを右クリックすると、MessageBoxが表示されません。

4
root

あなたはこのようにそれを行うことができます:

$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(....)
........
3
Mihail Kuznesov