2016-10-19 9 views
0

単純なWinFormsフォームオブジェクトにラベルを添付して、複数のハッシュテーブルの形式で単純なバックエンドからテキストを読み込みます(ハッシュテーブル、実際に)。PowerShellのWinFormsラベルに複数形式のハッシュテーブルを表示する方法

私は、次の形式で、それにプリロード情報を持っているテキストファイルがあります。これは私が情報を処理することができます

$hashArray = Get-Content $env:ProgramData\Path\BackEnd.txt | Out-String | iex 

:私はそうのような変数に追加

@{Key1='Value1x'; Key2='Value1y'; Key3='Value1z'} 
@{Key1='Value2x'; Key2='Value2y'; Key3='Value2z'} 
@{Key1='Value3x'; Key2='Value3y'; Key3='Value3z'} 

をハッシュテーブルと配列(並べ替え)の両方としてここで

は、利便性のための私の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)を試みましたが、違いはありませんでした。

私はそれがなぜこれをしているのかよくわからないので、私はそうしています。

ひどい場合、私はいつもいくつかの単一行のラベルオブジェクトを作成し、それらを重ね合わせて重ねることができますが、それが最善の方法だとは思われません。

答えて

0

私はそれを考え出しました。私は、textプロパティがどのように区切り文字を読み込んでプロパティ割り当てを終了するかを知ることを考え始めたときにそれを認識しました。

$hTA.Textエントリの下に2本のラインがどのように浮かんでいたかを見ると、明らかなようです。私は後世のためにここにこれを保つことができると思い

Value1x Value1y Value1z 
Value2x Value2y Value2z 
Value3x Value3y Value3z 

:このように表示さ

$hTA.Text = "{0} {1} {2}" -f $ht.Key1[0], $ht.Key2[0], $ht.Key3[0] 
$hTA.Text += "`n{0} {1} {2}" -f $ht.Key1[1], $ht.Key2[1], $ht.Key3[1] 
$hTA.Text += "`n{0} {1} {2}" -f $ht.Key1[2], $ht.Key2[2], $ht.Key3[2] 

:私はそれを動作させるためにやった

は、このでした。他の誰かが同様の問題を抱えている可能性があります。

0

あなたはこのように、単一フォーマット文字列で行うことができますしたい:

$fmt = "{0} {3} {6}`n{1} {4} {7}`n{2} {5} {8}" 
$hTA.Text = $fmt -f ($ht.Key1[0..2] + $ht.Key2[0..2] + $ht.Key3[0..2]) 
$fmt = "{0} {1} {2}`n{3} {4} {5}`n{6} {7} {8}" 
$hTA.Text = $fmt -f $ht.Key1[0], $ht.Key2[0], $ht.Key3[0], 
        $ht.Key1[1], $ht.Key2[1], $ht.Key3[1], 
        $ht.Key1[2], $ht.Key2[2], $ht.Key3[2] 

または、このような

関連する問題