我有一个由CSV文件填充的下拉菜单。我不得不改变我的代码以使其适用于v2。我无法弄清楚的最后一件事是自动完成。我希望能够输入列表框并让它从列表中提出一些选项。它在v3中工作正常,但不是v2。
以下是重要的部分......
$filecheck = "$dir\Apps\Customers.csv"
If(Test-Path -path $filecheck) {
$Customers = Import-CSV "$dir\Apps\Customers.csv" -Header $headers
$List = $customers | Select-Object -Expand name | where {$_ -ne ""} | where {$_ -ne "Name"} | Sort-Object
}
ForEach ($Items in $List) {
$companybox.Items.Add($Items)
}
$companybox.AutoCompleteSource = 'CustomSource'
$companybox.AutoCompleteMode = 'SuggestAppend'
$List | % {$companybox.AutoCompleteCustomSource.AddRange($_) }
$Form1.Controls.Add($companybox)
非常感谢任何帮助。我已经四处看了看但是找不到v2。
感谢。
答案 0 :(得分:0)
让它发挥作用。我将-STA添加到运行脚本的批处理文件中,以将其更改为Single Thread Apartment。
我的批处理文件现在看起来像是以管理员身份在STA中运行脚本...
SET Dir=%~dp0
SET PSPath=%Dir%Script.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-STA -NoProfile -ExecutionPolicy Bypass -File ""%PSPath%""' -Verb RunAs}";
另一种选择是把它放在PS脚本中......
if ([System.Threading.Thread]::CurrentThread.ApartmentState -eq [System.Threading.ApartmentState]::MTA)
{
powershell.exe -Sta -File $MyInvocation.MyCommand.Path
return
}
然而,第二个选项破坏了我必须在启动时隐藏控制台窗口的代码。