我有一个带组合框和文本框的GUI。我需要将文本框的输出更新为考虑组合框所选的文件。
我试过了 但是文本框中的输出不正确。任何人都可以帮忙。谢谢
$Disk = New-Object system.Windows.Forms.ComboBox
$Disk.AutoSize = $true
$Disk.DropDownStyle = "DropDownList"
$Disk.Items.AddRange((get-partition|?{$_.DriveLetter}|select DiskNumber ))
$SelectedFile= {
$DiskSelected = $Disk.SelectedItem
Write-Host "Disk Selected: $DiskSelected"
$DiskNum = $DiskSelected -split "@{DiskNumber="
$DiskNumber = $DiskNum -split "}"
Write-Host "Disk Number: $DiskNumber"
$TextBox1.AppendText((Get-Disk -Number $DiskNumber))
}
$Disk.add_SelectedIndexChanged($SelectedFile)
$Disk.DisplayMember = 'Name'
$TextBox1 = New-Object system.Windows.Forms.TextBox
$TextBox1.multiline = $true
$TextBox1.BackColor = "#F5F5F5"
文本框中的输出是这样的
MSFT_Disk (ObjectId = "{1}\\SSXX\root/Microsoft/Windows/Stor...) MSFT_Disk (ObjectId = "{1}\\SSXX\root/Microsoft/Windows/Stor...)
现在,我可以将磁盘信息带到文本框中,但是如果我在组合框中选择了另一个项目,文本框是否可以不更新。
$Disk = New-Object system.Windows.Forms.ComboBox
$Disk.AutoSize = $true
$Disk.DropDownStyle = "DropDownList"
$Disk.Items.AddRange((get-partition|?{$_.DriveLetter}| select DiskNumber ))
$SelectedFile = {
$DiskSelected = $Disk.SelectedItem
Write-Host "Disk Selected: $DiskSelected"
$DiskNum = $DiskSelected -split "@{DiskNumber="
$DiskNumber = $DiskNum -split "}"
Write-Host "Disk Number:$DiskNumber"
Get-Disk | Where-Object -FilterScript {$_.Number -Eq "$DiskNumber"} | Select FriendlyName, BusType, Size | Export-Csv 'Temp.csv' -NoType
$TextBox1.AppendText((Get-Content -Path ".\Temp.csv"))
}
$Disk.add_SelectedIndexChanged($SelectedFile)
$Disk.DisplayMember = 'Name'
$TextBox1 = New-Object system.Windows.Forms.TextBox
$TextBox1.multiline = $true
$TextBox1.WordWrap = $true
$TextBox1.BackColor = "#F5F5F5"
$textsize = ($width / 130)
$FontText = New-Object System.Drawing.Font("Calibri",$textsize,[System.Drawing.FontStyle]::Regular,[System.Drawing.GraphicsUnit]::Pixel)
$TextBox1.Font = $FontText
尝试这个。
using namespace System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms
$partitions = Get-Partition | where DriveLetter
########## Controls ##########
$comboBox1 =[ComboBox]@{
Location = "10,10"
AutoSize = $true
DropDownStyle = "DropDownList"
DisplayMember = "DriveLetter"
}
$comboBox1.Items.AddRange($partitions)
$textBox1 = [TextBox]@{
Location = "10,50"
Size = "900,300"
Anchor = "Left,Right,Top,Bottom"
Multiline = $true
WordWrap = $false
ScrollBars = "Both"
BackColor = "#F5F5F5"
Font = "Consolas,10"
}
$form = [form]@{ Size = "940,400" }
$form.Controls.AddRange(@($comboBox1, $textBox1))
########## EventHandlers ##########
$comboBox1.add_SelectedIndexChanged{
$selectedPartition = $comboBox1.SelectedItem
$TextBox1.Text = @(
$selectedPartition.DriveLetter + ":"
Get-Disk -Partition $selectedPartition | Format-List | Out-String
)
}
# Show form
[void]$form.ShowDialog()
请注意,您选择的项目是一个对象,而不是字符串。
尝试重写以下部分。
您可以通过$TextBox1.Text = ...
代替来更新所有文本$TextBox1.AppendText()
。
$Disk.Items.AddRange((get-partition|?{$_.DriveLetter}| select -ExpandProperty DiskNumber))
$SelectedFile = {
$DiskNumber = $Disk.SelectedItem
Write-Host "Disk Number:$DiskNumber"
$TextBox1.Text = Get-Disk $DiskNumber | Select FriendlyName, BusType, Size | Out-String
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句