如何允许 Ctrl+A 到 select all in a Windows Form textbox (powershell)

How to allow Ctrl+A to select all in a Windows Form textbox (powershell)

我正在编写带有 windows 表单 GUI 的 .ps1 脚本。当我从 Powershell ISE 运行 时,它允许在文本框中使用 Ctrl+A 到 'select all'。但是,当 运行在 ISE 外部设置 .ps1 时,CTRL+A 的操作什么都不做。

知道我可以更改文本框的哪些设置以允许 Ctrl+A 吗? 我能找到的关于这个主题的唯一线程是用其他语言编写的,比如 C。

目前我拥有的是:

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(110,20)
$textbox.Add_KeyDown({
    if ($_.KeyCode -eq "Enter") {$okButton.PerformClick()}
    })
**$textbox.acceptstab = $true
$textbox.shortcutsenabled = $True**
$form.Controls.Add($textBox)

我可以在这里重现你的问题。

一种选择是合并此答案 - - and call Application.EnableVisualStyles()

然后您的示例变为(使用额外的 set-up 代码使其 self-contained):

Add-Type -AssemblyName "System.Windows.Forms"
Add-Type -AssemblyName "System.Drawing"

[System.Windows.Forms.Application]::EnableVisualStyles()

$form = new-object System.Windows.Forms.Form

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(110,20)
$textbox.Add_KeyDown({
    if ($_.KeyCode -eq "Enter") {$okButton.PerformClick()}
    })
#$textbox.acceptstab = $true
#$textbox.ShortcutsEnabled = $true

$form.Controls.Add($textBox)

$form.ShowDialog()

然后您可以在文本框中使用 Ctrl+A 来 select 文本。

您可以手动将 Ctrl+A 事件写入 select 文本框内容:

$textbox.Add_KeyDown({
  if (($_.Control) -and ($_.KeyCode -eq 'A')) {
     $textbox.SelectAll()
  }
})