我正在寻找一种方法将TXT或XML(首选)文件导入PowerShell,然后在大文本框或列表框中显示信息(我一直在尝试这两种方法)。我更喜欢XML的原因是有3个部分,我不想要3个不同的文件。这是一个GUI脚本,它有一个" help"弹出一个较小的GUI窗口的按钮。帮助窗口有3个按钮,如何使用,错误消息和更新注释。我希望XML文件看起来像这样......
<Help>
<HowTo>
Text line 1
Text line 2
Text line 3
</HowTo>
<Errors>
More text
</Errors>
<Updates>
More text
</Updates>
</Help>
每个按钮都会在大文本框中显示相应的XML文本。我可以让它从XML中显示文本就好了,但是我无法弄清楚如何在新行上正确显示它,就像我在XML文件本身中键入它一样。在上面的示例中,我点击了&#34;如何使用&#34;按钮,它会像上面一样显示3行。如果它现在尝试它会显示... ...
Text line1Text line 2Text line 3
我目前正在尝试使用启用了多行的文本框,因此当它变得太长时它会回滚,但是没有正确的换行符。我尝试格式化XML行以强制换行,但它没有用。
Text line 1 `r`n
Text line 2 `r`n
etc.
我目前正在使用Get-Content将TXT或XML文件保存到变量中。如果有另一种方法可以让它保持格式化有用。我还没有找到任何东西。
更新:尝试标签
使用标签可以保持正确的格式,并且可以正确地重新调整窗口大小,但是当窗口重新调整大小时,按钮会保持在他们所处的位置。这是一个截图。
按钮在调整大小时是否有办法跟随框,是否有垂直滚动选项?每个按钮都会有大量的文字,因此可能需要滚动。
答案 0 :(得分:0)
使用Label
的示例Add-Type -AssemblyName System.Windows.Forms
$display = [xml]@'
<Help>
<HowTo>
Text line 1
Text line 2
Text line 3
</HowTo>
<Errors>
these are the errors
</Errors>
<Updates>
update notes here
</Updates>
</Help>
'@
# Build Form
$Form = New-Object System.Windows.Forms.Form
$Form.Text = 'INFO'
$Form.Width = 330
$Form.Height = 243
$Form.AutoSizeMode = 'GrowAndShrink'
$Form.StartPosition = 'CenterScreen'
# Build Label
$Label = New-Object System.Windows.Forms.Label
$Label.Text = ''
$Label.Font = New-Object System.Drawing.Font('Consolas', 9)
$Label.AutoSize = $true
$label.Left = 10
$label.Top = 0
# Build OK Button
$howtobutton = New-Object System.Windows.Forms.Button
$howtobutton.Left = 10
$howtobutton.Top = 170
$howtobutton.width = 100
$howtobutton.Text = 'How To'
$howtobutton.Add_Click({$Label.Text = $display.Help.HowTo})
# Build OK Button
$errorsbutton = New-Object System.Windows.Forms.Button
$errorsbutton.Left = 110
$errorsbutton.Top = 170
$errorsbutton.width = 100
$errorsbutton.Text = 'Errors'
$errorsbutton.Add_Click({$Label.Text = $display.Help.Errors})
# Build OK Button
$updatebutton = New-Object System.Windows.Forms.Button
$updatebutton.Left = 210
$updatebutton.Top = 170
$updatebutton.width = 100
$updatebutton.Text = 'Update Notes'
$updatebutton.Add_Click({$Label.Text = $display.Help.Updates})
# Use Enter/Esc key
$Form.KeyPreview = $True
$Form.Add_KeyDown({
if ($_.KeyCode -eq 'Escape') {
$Form.Close()
}
})
# Add Controls to Form
$Form.Controls.Add($howtobutton)
$Form.Controls.Add($errorsbutton)
$Form.Controls.Add($updatebutton)
$form.controls.Add($label)
[void]$Form.ShowDialog()