我正在为powershell脚本构建GUI。它是Powershell工作室内建造的一种形式。
我有这个代码运作良好:
(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输入事件,它就会点击该按钮。 (通缉行为)
这对我来说似乎很奇怪,就好像当你点击一个下拉值时,代码就像是#34;你按下了输入"。这有什么奇怪的相关性?我希望两者兼而有之,它能够按下输入点击按钮并且能够选择一个自动完成值而不会触发按钮点击...看起来似乎太多了,不是吗? / p>
感谢您的时间。
答案 0 :(得分:0)
不确定是否有其他解决方案,但在这种情况下的解决方法是:
删除按下ENTER时单击按钮的keydown事件
和
通过将表单的AcceptButton设置为您的按钮来替换它。这样,当用户按下ENTER时,该按钮被触发,自动完成下拉列表按预期运行。