Я пытаюсь этот код, который работает правильно:
$form = New-Object System.Windows.Forms.Form
$form.ClientSize = '300,150'
$form.Text = 'Form Test'
$form.TopMost = $false
$Button1 = New-Object system.Windows.Forms.Button
$Button1.text = "Close"
$Button1.width = 60
$Button1.height = 30
$Button1.Font = 'Microsoft Sans Serif,10'
$Button1.add_Click({[System.Windows.Forms.MessageBox]::Show("Hello World." , "My Dialog Box")})
$form.Controls.AddRange(@($Button1))
$form.showDialog()
Я не понимаю, почему этот код не работает правильно (посмотрите на строку Buton1.add_Click).Диалоговое окно в Buton1.add_Click () запускается при запуске программы.
$form = New-Object System.Windows.Forms.Form
$form.ClientSize = '300,150'
$form.Text = 'Form Test'
$form.TopMost = $false
$Button1 = New-Object system.Windows.Forms.Button
$Button1.text = "Close"
$Button1.width = 60
$Button1.height = 30
$Button1.Font = 'Microsoft Sans Serif,10'
$Button1.add_Click([System.Windows.Forms.MessageBox]::Show("Hello World." , "My Dialog Box"))
$form.Controls.AddRange(@($Button1))
$form.showDialog()
Цель состоит в том, чтобы создать класс для этой формы, например:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
Class WindowView : System.Windows.Forms.Form {
WindowView() {
$this.ClientSize = '300,150'
$this.Text = 'Test de Form'
$this.TopMost = $false
$Button1 = New-Object system.Windows.Forms.Button
$Button1.text = "Close"
$Button1.width = 60
$Button1.height = 30
$Button1.Font = 'Microsoft Sans Serif,10'
$Button1.add_Click($this.monBoutonFunc_Click())
$this.Controls.AddRange(@($Button1))
}
[Void] monBoutonFunc_Click() {
[System.Windows.Forms.MessageBox]::Show("Hello World." , "My Dialog Box")
$this.monBoutonFunc_Click()
}
}
$Form1 = [WindowView]::new()
$Form1.Add_Shown({$Form1.Activate()})
$Form1.showDialog()
Конечно, когда код в Button1.add_Click () выполняется в начале, форма закрывается «до», чтобы быть Show.
Каков синтаксис для правильной регистрации событий в объектно-ориентированном объекте powershell?
Большое спасибо за помощь и советы