嘗試將資訊集合存盤在 microsoft 組合框下拉項中,以便在選擇它時,您可以提取這些值(類似于反應等)這可能嗎?
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$combo = New-Object system.Windows.Forms.ComboBox
$combo.Items.add("test")
#get value of selected item here (this code does not work)
write-output($combo.Items[$combo.SelectedIndex].value)
在這個例子中:
$DBArray = Get-Content "$Global:DashboardDir\IncludeFiles\Datapools\Tables\Tables.txt"
#Setup Table Dropdown
foreach ($Database in $DBArray) {
$info = $database.split("|")
if ($Database -ne 'SQLServer|DBName|TableName') {
$SelectQueryCDC_Tables.Items.add(@{
value = $info
display = "CDC Enabled for $($info[2])?"
})
}
}
顯示:

我想將完整的 $info 陣列存盤為某個值,以便以后可以對其進行操作,同時仍然只顯示該display屬性。
uj5u.com熱心網友回復:
您只需要洗掉.value屬性訪問器:
PS C:\WINDOWS\system32> $combo.Items[$combo.SelectedIndex]
test
這是因為Items屬性是物件的集合,物件上沒有value屬性:
PS C:\WINDOWS\system32> $combo.Items.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
False False ObjectCollection System.Object
PS C:\WINDOWS\system32> $combo.Items[$combo.SelectedIndex].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
現在您已經更新了問題以表明您正在向集合中添加 hastables,您可以使用要顯示的哈希表中的專案的鍵:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$combo = New-Object system.Windows.Forms.ComboBox
$combo.Items.add(@{
value = "the info array would be here"
display = "CDC Enabled display message here"
})
#show the display message of the selected item here
write-output($combo.Items[$combo.SelectedIndex]['display'])
您可以在此處閱讀有關如何使用哈希表的更多資訊:您想了解的有關哈希表的所有資訊
好的,通過對問題的最新編輯,您似乎缺少兩件事:
- 使用
[PSCustomObject]要添加到組合框中的專案的型別 - 將組合框的屬性設定為
DisplayMember要顯示的屬性
例如:
foreach ($database in $DBArray) {
$info = $database.split("|")
if ($database -ne 'SQLServer|DBName|TableName') {
$combo.Items.add([PSCustomObject]@{
value = $info
display = "CDC Enabled for $($info[2])?"
})
}
}
$combo.DisplayMember = 'display'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/529126.html
標籤:。网电源外壳
上一篇:通過foreach回圈決議XML值并基于它生成url
下一篇:在Powershell中,僅使用記憶體(沒有可用的磁盤存盤),我如何創建一個大文本檔案的zip存檔并將其附加到電子郵件中?
