PowerShell-GUIs (.NET-Formulare), Rechtsklick-Ereignis auf Schaltfläche

2136
root

Wie können Rechtsklick-Ereignisse, die auf einer Schaltfläche auftreten, erfasst werden? Ich möchte eine Aktion ausführen, wenn eine Schaltfläche einen Rechtsklick erhält. Unten ist ein Beispielformular:

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 

Nachdem ich einige Dokumentation gelesen hatte, fügte ich dies unterhalb der $button01.Add_ClickZeile hinzu:

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

Wenn ich mit der rechten Maustaste auf die Schaltfläche klicke, wird keine MessageBoxangezeigt.

4

1 Antwort auf die Frage

3
Mihail Kuznesov

Sie können es so machen:

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

Oder Sie können verwenden

$button01.Add_MouseDown(....) 

Sie finden alle unterstützten Ereignisse der Button-Klasse hier: https://msdn.microsoft.com/de-de/library/system.windows.forms.button(v=vs.110).aspx

und Sie können es in diesem Stil verwenden:

$button01.Add_AutoSizeChanged(....) $button01.Add_BackColorChanged(....) $button01.Add_BackgroundImageChanged(....) ........ 
Hast du es versucht? Es hat nicht funktioniert, als ich es ausprobierte (aber meine Syntax war etwas anders). harrymc vor 7 Jahren 0
Ja, fügen Sie meinen Code nach $ button01.add_click (...) in das Originalskript ein und es wird ein anderes Meldungsfeld angezeigt, wenn Sie mit der linken Maustaste auf die Schaltfläche klicken und mit der rechten Maustaste auf die Schaltfläche. Mihail Kuznesov vor 7 Jahren 1