我正在嘗試在 Powershell 中創建一個表單。它包含一個 ComboBox 下拉選項,我將其用作必填欄位。在選擇一個選項之前,繼續按鈕將被禁用。這是 ComboBox 和按鈕啟用的代碼:
$TSTypeBox.Name = "TSType"
$TSTypeBox.Location = New-Object System.Drawing.Point(116,100)
$TSTypeBox.Size = New-Object System.Drawing.Size(145,20)
$TSTypeBox.add_MouseHover($ShowHelp)
$TSTypeBox.DropDownStyle = "DropDownList"
Foreach ($item in ("1","2","3","4","5")) {
$TSTypeBox.Items.Add($item) | Out-Null
}
$TSTypeBox.SelectedItem = $TSLocation
$handler_TSTypeBox_SelectedIndexChanged= {
If (($TSTypeBox.Text) -and ($ComputerNameBox.Text))
{
$OKButton.Enabled = 1
}
Else
{
$OKButton.Enabled = 0
}
}
$TSTypeBox.add_SelectedIndexChanged($handler_TSTypeBox_SelectedIndexChanged)
這段代碼特別按預期作業,所以我不擔心。我在這里是關于$TSTypeBox.SelectedItem = $TSLocation我包含的行。我在別處有代碼可以提取正在運行程式的計算機的 IP 地址,然后將其與 if/elseif/else 陳述句進行匹配,以確定計算機是屬于1還是 to 2,您可以看到添加了哪些選項到上面代碼中的組合框。
if/else 陳述句更新了$TSLocation變數,然后我用它來強制選擇 ComboBox 中的下拉選項之一。這也有效,但不幸的是它沒有像我希望的那樣啟用繼續按鈕。我很難查找有關此的問題,因為它非常特別,而且我可能做錯了(我對 Powershell 腳本的經驗很少)。如果您對此有任何其他問題,請告訴我。謝謝!
uj5u.com熱心網友回復:
好的,這可能說明您的問題。
僅僅因為您將SelectedItem值設定為某物,并不意味著SelectedIndex更改
#
Add-Type -AssemblyName System.Windows.Forms -ErrorAction Stop
#
$TSLocation = '2'
#
$form = New-Object System.Windows.Forms.Form
$form.Text = "Test"
$form.MinimumSize = '430,495'
$form.MaximumSize = '430,545'
$form.StartPosition = 'CenterScreen'
#
# Add form objects
#
$TSTypeBox = New-Object System.Windows.Forms.ComboBox
$TSTypeBox.Name = "TSType"
$TSTypeBox.Location = '116,100'
$TSTypeBox.Size = '145,20'
$TSTypeBox.add_MouseHover($ShowHelp)
$TSTypeBox.DropDownStyle = "DropDownList"
Foreach ($item in ("1","2","3","4","5")) {
$TSTypeBox.Items.Add($item) | Out-Null
}
$ComputerNameBox = New-Object System.Windows.Forms.TextBox
$ComputerNameBox.Location = '120,20'
$ComputerNameBox.Size = '120,17'
$ComputerNameBox.Text = 'test'
$OutputBox = New-Object System.Windows.Forms.TextBox
$OutputBox.Location = '120,240'
$OutputBox.Size = '120,17'
$OkButton = New-Object System.Windows.Forms.Button
$OkButton.Location = '120,200'
$OkButton.Size = '54,24'
$OkButton.Text = 'OK'
$form.controls.AddRange(@($TSTypeBox,$OkButton,$ComputerNameBox,$OutputBox))
#
# Main Script goes here
#
$handler_TSTypeBox_SelectedIndexChanged= {
$OutputBox.Text = "SelectedIndex is " $TSTypeBox.SelectedIndex
If (($TSTypeBox.Text) -and ($ComputerNameBox.Text))
{
$OKButton.Enabled = 1
}
Else
{
$OKButton.Enabled = 0
}
}
$TSTypeBox.add_SelectedIndexChanged($handler_TSTypeBox_SelectedIndexChanged)
#
$TSTypeBox.SelectedIndex = $TSTypeBox.FindStringExact($TSLocation)
#
# Show form
$form.ShowDialog() | Out-Null
$form.Dispose()
# End
如果有疑問,最好總是簡化您的腳本并添加除錯、日志記錄或顯示值正在更改的輸出
現在問題已經很清楚了 - 這篇文章為您指明了正確的方向:
如何使用 C# 在組合框中設定所選專案以匹配我的字串?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/379970.html
