如何将TXT或XML文件中的数据导入Powershell文本框或列表框

时间:2016-05-31 19:02:24

标签: xml powershell

我正在寻找一种方法将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文件保存到变量中。如果有另一种方法可以让它保持格式化有用。我还没有找到任何东西。

更新:尝试标签

使用标签可以保持正确的格式,并且可以正确地重新调整窗口大小,但是当窗口重新调整大小时,按钮会保持在他们所处的位置。这是一个截图。

按钮在调整大小时是否有办法跟随框,是否有垂直滚动选项?每个按钮都会有大量的文字,因此可能需要滚动。

1 个答案:

答案 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()