【问题标题】:Powershell (studio) - AutoComplete dropdown value clicks a button?Powershell(工作室) - 自动完成下拉值单击按钮?
【发布时间】:2018-03-01 20:41:43
【问题描述】:

我正在为一个 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 输入事件,它不会单击按钮。 (通缉行为)

这对我来说似乎很奇怪,就好像当您单击一个下拉值时,代码将其理解为“您按下了输入”。这是什么奇怪的关联?我想要两者兼得,它能够按下回车键来单击按钮,并且能够选择一个自动完成值而不触发按钮单击......看起来好像没有太多要求,不是吗?

感谢您的宝贵时间。

【问题讨论】:

  • 查找框的 On_Click 事件代码。
  • 文本框除了我添加的 _KeyDown 之外没有任何事件,因此当您按 Enter 时它会单击按钮。
  • 等等什么?删除 ENTER 按键的 _keydown 事件可以修复它。那么我是否理解通过单击下拉列表中的值,它会将其理解为按下 ENTER 键?!
  • 您的 KeyDown 事件代码是什么样的?
  • @EBGreen 我编辑了上面的帖子,谢谢

标签: powershell autocomplete textbox powershell-studio


【解决方案1】:

不确定是否有其他解决方案,但在这种情况下的解决方法是:

删除按下 ENTER 时单击按钮的 keydown 事件

通过将表单的 AcceptButton 设置为您的按钮来替换它。这样,当用户按下 ENTER 键时,会触发该按钮,并且自动完成下拉菜单会按预期工作。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多