Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Powershell将ComboBox所选文件附加到TextBox?_Powershell_User Interface_Textbox_Disk - Fatal编程技术网

如何使用Powershell将ComboBox所选文件附加到TextBox?

如何使用Powershell将ComboBox所选文件附加到TextBox?,powershell,user-interface,textbox,disk,Powershell,User Interface,Textbox,Disk,我有一个带有combobox和textbox的GUI。我需要更新文本框的输出,考虑到组合框选择的文件。< /P> 我试过这个。但是文本框中的输出不正确。 任何人都可以帮忙。多谢各位 $Disk = New-Object system.Windows.Forms.ComboBox $Disk.AutoSize = $true $Disk.DropDownStyle = "DropDownList" $Disk.Items.AddRange((get-partition|?{$_.DriveLet

我有一个带有combobox和textbox的GUI。我需要更新文本框的输出,考虑到组合框选择的文件。< /P> 我试过这个。但是文本框中的输出不正确。 任何人都可以帮忙。多谢各位

$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...)
更新 现在,我可以将磁盘信息带到textbox,但是如果我在combobox中选择另一项,textbox不会更新

$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()
更新所有文本


你好,rokumaru谢谢你的帮助。我更新我的代码。现在我可以将磁盘信息带到文本框。但问题是,如果在组合框中选择另一项,则无法更新文本框。有什么想法吗。谢谢你好,rokumaru。。我尝试了代码的事件处理程序,问题是,如果我选择另一个DiskNumber,则DiskNumber 0始终存在。你知道这个问题吗?添加到答案中。是的,我尝试使用$TextBox1.Text=。。。但是0号磁盘一直在那里我知道了。。谢谢
$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
}