【发布时间】:2016-10-19 05:02:42
【问题描述】:
我有一个简单的 WinForms 表单对象,它附加了一个标签,我从一个简单的后端以多个哈希表的形式(实际上是一个哈希表数组)加载文本。
我有一个文本文件,其中预加载了以下格式的信息:
@{Key1='Value1x'; Key2='Value1y'; Key3='Value1z'}
@{Key1='Value2x'; Key2='Value2y'; Key3='Value2z'}
@{Key1='Value3x'; Key2='Value3y'; Key3='Value3z'}
我将其附加到这样的变量中:
$hashArray = Get-Content $env:ProgramData\Path\BackEnd.txt | Out-String | iex
这使我可以将信息作为哈希表和数组(有点)来处理。
为方便起见,这是我的 WinForm 模型:
[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
$form = New-Object Windows.Forms.Form
$form.Size = '850,500'
$form.StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
$hTA = New-Object Windows.Forms.Label
$hTA.Size = '500,400'
$hTA.Location = '50,50'
$ht = Get-Content $env:ProgramData\Path\BackEnd.txt | Out-String | iex
$hTA.Text = "{0} {1} {2}" -f $ht.Key1[0], $ht.Key2[0], $ht.Key3[0]
"{0} {1} {2}" -f $ht.Key1[1], $ht.Key2[1], $ht.Key3[1]
"{0} {1} {2}" -f $ht.Key1[2], $ht.Key2[2], $ht.Key3[2]
$form.Controls.Add($hTA)
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()
在那种格式下,唯一显示的是:
Value1x Value1y Value1z
我认为这可能是该特定控件项 (Windows.Forms.Label) 的多行问题,因此我将 $hTA.Text 的分配替换为多行 Here-String:
$hTA.Text = @"
Test1
Test2
Test3
"@
这显示正确,显示每一行。
我尝试了一个下划线转义字符 (`n),但这没有任何区别。
我不太清楚它为什么这样做,所以,我转向 SO。
更糟糕的情况是,我总是可以创建几个单行标签对象并将它们堆叠在一起,但是,我认为这不是最好的方法。
【问题讨论】:
标签: winforms powershell label hashtable