Powershell (studio) - значение выпадающего меню автозаполнения нажимает кнопку?
Я строю графический интерфейс для сценария powershell. Это форма, созданная в студии Powershell.
У меня есть этот код, который хорошо работает:
(Get-Content ".\historique.txt") | ? { $_.trim() -ne "" } | set-content ".\historique.txt"
$postes_historique = Get-Content ".\historique.txt"
$textboxPoste.AutoCompleteCustomSource.AddRange($postes_historique)
Он берет то, что находится в текстовом файле "historyique.txt", и предлагает значения автозаполнения для текстового поля следующим образом:
На этом texbox у меня установлено событие KEYDOWN, поэтому, когда пользователь нажимает ENTER, он нажимает кнопку под текстовым полем:
$textboxPoste_KeyDown = [System.Windows.Forms.KeyEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.KeyEventArgs]
if ($_.KeyCode -eq 'Enter')
{
$buttonConnexion.PerformClick()
}
}
Странная часть и мой вопрос:
-Если я щелкаю значение в раскрывающемся списке, он нажимает кнопку. (НЕДОПУСТИМОЕ ПОВЕДЕНИЕ)
-Если я удаляю событие ввода KeyDown, он НЕ нажимает кнопку. (Требуется поведение)
Это кажется мне очень странным, как будто, когда вы щелкаете по раскрывающемуся значению, код понимает его как "ВЫ НАЖИМАЛИ ВВОД". Что это за странная корреляция? Я хочу иметь и то, и другое: возможность нажимать клавишу ввода, чтобы нажать кнопку, и возможность выбрать значение автозаполнения без нажатия кнопки... Не кажется, что спросить слишком много, нет?
Спасибо за ваше время.
1 ответ
Не уверен, что есть другое решение, но обходной путь в этом случае:
УДАЛИТЬ событие нажатия клавиш, которое нажимает кнопку при нажатии клавиши ВВОД
а также
Замените его, установив AcceptButton формы на вашу кнопку. Таким образом, когда пользователь нажимает клавишу ВВОД, эта кнопка срабатывает, и выпадающий список автозаполнения действует как ожидалось.