【发布时间】:2022-09-27 19:03:08
【问题描述】:
也许你们中的一位专家可以帮助一个完整的新手(我不知道我想要的是否可行)。 假设我有一个包含各种数据的 CSV 文件。 (见 csv_screenshot)csv_screenshot
我通过 Powershell 将这些数据导入到一个小的 GUI 中。我怎样才能做到这一点,当我搜索“巴黎”时,我真的只能在 GUI 中以列表视图的形式获得巴黎的输出(参见 powershell_screenshot)
目前,GUI 中的输出如下所示(参见 current_result.png)。我如何将它很好地格式化为那里的列表。我真的很想像这样插入它(通过 Out Grid View 没问题) current_result.png
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\")
[void] [System.Windows.Forms.Application]::EnableVisualStyles();
function search_csv {
$Input = $textbox_Search.text
$Input = \"*$Input*\"
$Input_Result = import-csv -path C:\\Users\\check.csv -Header \"Location\", \"Client\", \"Mobile Device\"
$output_TextBox.text = $Input_Result -like $Input
}
$search_csvtool = New-Object System.Windows.Forms.Form
$search_csvtool.Text = \"CSV Search\"
$search_csvtool.Size = New-Object System.Drawing.Size(674,500)
$search_csvtool.FormBorderStyle =\"FixedDialog\"
$search_csvtool.TopMost = $true
$search_csvtool.MaximizeBox = $false
$search_csvtool.MinimizeBox = $true
$search_csvtool.ControlBox = $true
$search_csvtool.StartPosition = \"CenterScreen\"
$search_csvtool.Font = \"Courier New\"
$label_Search = New-Object System.Windows.Forms.Label
$label_Search.Location = New-Object System.Drawing.Size(195,18)
$label_Search.Size = New-Object System.Drawing.Size(265,32)
$label_Search.TextAlign =\"MiddleCenter\"
$label_Search.Text = \"Please enter \"
$search_csvtool.Controls.Add($label_Search)
$textbox_Search = New-Object System.Windows.Forms.TextBox
$textbox_Search.Location = New-Object System.Drawing.Size(195,50)
$textbox_Search.Size = New-Object System.Drawing.Size(266,37)
$search_csvtool.Controls.Add($textbox_Search)
$button_Search = New-Object System.Windows.Forms.Button
$button_Search.Location = New-Object System.Drawing.Size(195,80)
$button_Search.Size = New-Object System.Drawing.Size(266,24)
$button_Search.TextAlign = \"MiddleCenter\"
$button_Search.Text = \"Search\"
$button_Search.Add_Click({search_csv})
$search_csvtool.Controls.Add($button_Search)
$output_TextBox = New-Object System.Windows.Forms.TextBox
$output_TextBox.Multiline = $true;
$output_TextBox.Location = New-Object System.Drawing.Size(16,130)
$output_TextBox.Size = New-Object System.Drawing.Size(627,314)
$output_TextBox.ScrollBars = \"Vertical\"
$output_TextBox.ReadOnly = $true;
$search_csvtool.Controls.Add($output_TextBox)
$search_csvtool.Add_Shown({$search_csvtool.Activate()})
[void] $search_csvtool.ShowDialog()
-
我猜您希望使用
| Format-List | Out-String格式化您的结果。提示 1:不要使用变量名$Input,因为那是Automatic variable。为此选择另一个名称。提示 2:在您的代码中只导入一次 CSV,而不是每次调用函数 search_csv 时。提示 3: 使用Add-Type -AssemblyName System.Windows.Forms而不是古老的LoadWithPartialName()方法 -
首先感谢您的提示。我已经采纳了你的建议。我已经测试过 Format-List | Out-String 之前。结果相同。 GUI 中的输出仍未格式化为列表(参见 current_result.png)
标签: powershell