Powershell (studio) - 自动完成下拉值单击按钮?
Powershell (studio) - AutoComplete dropdown value clicks a button?
我正在为 powershell 脚本构建 GUI。这是在 Powershell studio 中构建的表单。
我有这个运行良好的代码:
(Get-Content ".\historique.txt") | ? { $_.trim() -ne "" } | set-content ".\historique.txt"
$postes_historique = Get-Content ".\historique.txt"
$textboxPoste.AutoCompleteCustomSource.AddRange($postes_historique)
它获取“historique.txt”文本文件中的内容,并为文本框建议自动完成值,如下所示:
在那个 texbox 上,我设置了一个 KEYDOWN 事件,所以当用户按下 ENTER 时,它会点击文本框下方的按钮:
$textboxPoste_KeyDown = [System.Windows.Forms.KeyEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.KeyEventArgs]
if ($_.KeyCode -eq 'Enter')
{
$buttonConnexion.PerformClick()
}
}
奇怪的部分和我的问题是:
-如果我单击下拉列表中的一个值,它会单击该按钮。 (不良行为)
-如果我删除 KeyDown 输入事件,它不会单击按钮。 (通缉行为)
这对我来说似乎很奇怪,就好像当您单击下拉值时,代码将其理解为“您按下了 ENTER”。这是什么奇怪的关联?我想要两者兼而有之,即能够按下回车键单击按钮并能够选择自动完成值而不会触发按钮单击...似乎要求不多,不是吗?
感谢您的宝贵时间。
不确定是否有其他解决方案,但在这种情况下的解决方法是:
移除按下 ENTER 时单击按钮的 keydown 事件
和
通过将表单的 AcceptButton 设置为您的按钮来替换它。这样,当用户按下 ENTER 时,该按钮将被触发,自动完成下拉菜单将按预期运行。
我正在为 powershell 脚本构建 GUI。这是在 Powershell studio 中构建的表单。
我有这个运行良好的代码:
(Get-Content ".\historique.txt") | ? { $_.trim() -ne "" } | set-content ".\historique.txt"
$postes_historique = Get-Content ".\historique.txt"
$textboxPoste.AutoCompleteCustomSource.AddRange($postes_historique)
它获取“historique.txt”文本文件中的内容,并为文本框建议自动完成值,如下所示:
在那个 texbox 上,我设置了一个 KEYDOWN 事件,所以当用户按下 ENTER 时,它会点击文本框下方的按钮:
$textboxPoste_KeyDown = [System.Windows.Forms.KeyEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.KeyEventArgs]
if ($_.KeyCode -eq 'Enter')
{
$buttonConnexion.PerformClick()
}
}
奇怪的部分和我的问题是:
-如果我单击下拉列表中的一个值,它会单击该按钮。 (不良行为)
-如果我删除 KeyDown 输入事件,它不会单击按钮。 (通缉行为)
这对我来说似乎很奇怪,就好像当您单击下拉值时,代码将其理解为“您按下了 ENTER”。这是什么奇怪的关联?我想要两者兼而有之,即能够按下回车键单击按钮并能够选择自动完成值而不会触发按钮单击...似乎要求不多,不是吗?
感谢您的宝贵时间。
不确定是否有其他解决方案,但在这种情况下的解决方法是:
移除按下 ENTER 时单击按钮的 keydown 事件
和
通过将表单的 AcceptButton 设置为您的按钮来替换它。这样,当用户按下 ENTER 时,该按钮将被触发,自动完成下拉菜单将按预期运行。