Удаление Add_Click с кнопки WinForm в Powershell (remove_Click) - PullRequest
0 голосов
/ 05 сентября 2018

У меня проблема с пониманием кода Powershell для удаления события Click из кнопки WinForm. После нескольких часов ... нескольких дней попыток, попыток понять и отчаиваться, я думал, что сделаю перерыв, и, вероятно, вы, ребята, можете мне помочь. Я действительно прочитал несколько сообщений на эту тему. Но это не помогло мне, наконец. Поэтому, пожалуйста, позвольте мне снова задать этот вопрос.

Я видел, что есть возможность использовать Eventhandlers, и этот метод, кажется, работает довольно хорошо. Поскольку мой код кажется правильным, поскольку Powershell не выдает ошибку, я хотел бы знать, почему строка кода не работает. Я действительно не понимаю, почему. Потому что я нашел несколько кодов с примерами remove_Click, но в моем случае это, кажется, не делает то, что я ожидаю. Поскольку я действительно не понимаю, почему я хотел бы, чтобы вы мне помогли. Пожалуйста, будьте так любезны и попытайтесь объяснить мне, почему строка 30 моего сценария не имеет эффекта или не дает желаемого эффекта.

Коротко: что я хочу сделать? Я просто хочу удалить событие Click из кнопки. Я мог бы добавить событие к кнопке, используя Add_Click. Поэтому я подумал, что Remove_Click удалит «Click Code» из этой специальной кнопки. Но это не похоже на работу. Я просто хочу удалить свойство Click с кнопки, если savefiledialog закрывается с помощью кнопки отмены.

Это код:

Add-Type -AssemblyName System.Windows.Forms


function form_status(){
$form_status = New-Object System.Windows.Forms.Form
$form_status.Size = New-Object System.Drawing.Size(800,530)
$form_status.StartPosition = 'CenterScreen'
$form_status.FormBorderStyle = 'FixedToolWindow'

$form_status_button_csv_logfile = New-Object System.Windows.Forms.Button
$form_status_button_csv_logfile.Location = New-Object System.Drawing.Point(1,1)
$form_status_button_csv_logfile.Size = New-Object System.Drawing.Size(50,50)
$form_status.Controls.Add($form_status_button_csv_logfile)
$form_status_button_csv_logfile.Add_Click({Choose-Folder-For-Checksumlog})
$form_status_button_csv_logfile.add_MouseHover({button_mousehover})
$form_status_button_csv_logfile.add_MouseLeave({button_mouseleave})

[System.Windows.Forms.Application]::EnableVisualStyles();
$form_status_result = $form_status.ShowDialog()
}

Function Choose-Folder-For-Checksumlog(){
$SaveChooser = New-Object -Typename System.Windows.Forms.SaveFileDialog
$SaveChooser.InitialDirectory = [Environment]::GetFolderPath("Desktop")
$SaveChooser.Filter = "CSV Logfile (*.csv)|*.csv"
$savechooser.FileName = "testfile.csv"

if($SaveChooser.ShowDialog() -eq [System.Windows.Forms.DialogResult]::CANCEL){
$savechooser.FileName = ""
$form_status_button_csv_logfile.Remove_Click({Choose-Folder-For-Checksumlog})
}
$checksumlog_folder = $SaveChooser.FileName
}

function button_mouseleave(){
$form_status.Cursor=[System.Windows.Forms.Cursors]::Default
}

function button_mousehover(){
$form_status.Cursor=[System.Windows.Forms.Cursors]::Hand
}

form_status

Я ценю любую помощь от вас, ребята. Пожалуйста, будьте так добры и объясните мне, что я делаю неправильно. Вероятно, мои ожидания неверны ... Но я не понимаю этого сейчас.

С наилучшими пожеланиями Fernandez

...