2010-09-10 80 views
1

所以我有一個從外部腳本動態創建的服務器的數組變量。 我現在需要用每個服務器的複選框列表填充我的GUI窗體。這將作爲部署到所述服務器時的選擇機制。變量擴展在另一個變量(Powershell)

由於我不知道我的列表中有多少臺服務器,因此此表單必須具有動態創建的複選框。我遇到的問題是設置這些新變量的參數,並添加到表單中。我只是不明白我可以如何強制PS在複選框變量名稱內展開我的迭代器變量。 這是我目前有,這將創造我的變量,但更新不適用的參數:

$form1.Text = "Server Selection" 
$form1.Name = "form1" 
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
$System_Drawing_Size = New-Object System.Drawing.Size 
$System_Drawing_Size.Width = 235 
$System_Drawing_Size.Height = 500 
$form1.ClientSize = $System_Drawing_Size 
$i = 0 
$y = 0 
$serverList | %{ 
    New-Variable -Name "Checkbox$i" -value (New-Object System.Windows.Forms.CheckBox) 
    set-variable -name "Checkbox$i.VisualStyleBackColor" -value $true 
    $System_Drawing_Size = New-Object System.Drawing.Size 
    $System_Drawing_Size.Width = 104 
    $System_Drawing_Size.Height = 24 
    $Checkbox{i}.Size = $System_Drawing_Size 
    $Checkbox{i}.TabIndex = $i 
    $Checkbox{i}.text = $_ 
    $System_Drawing_Point = New-Object System.Drawing.Point 
    $System_Drawing_Point.X = 60 
    $System_Drawing_Point.Y = 21 + $y 
    $Checkbox{i}.Location = $System_Drawing_Point 
    $Checkbox{i}.DataBindings.DefaultDataSourceUpdateMode = 0 
    $Checkbox{i}.name = "server" 
    $y = $y + 20 
    $i++ 
    $form1.Controls.Add($Checkbox{i}) 


} 

任何人都知道我怎麼能這樣做正確的擴展或轉讓?

回答

2

首先回答您的具體問題:

(Get-Variable "Checkbox$i").Value.Size = $System_Drawing_Size 

但更普遍的,你爲什麼不保存複選框列表中的數組,並通過索引來訪問它們?

編輯:讓我告訴你。

$Checkboxes = @() 
$serverList | %{ 
    $Checkboxes += New-Object System.Windows.Forms.CheckBox 
    $Checkboxes[-1].VisualStyleBackColor = $true 
    $System_Drawing_Size = New-Object System.Drawing.Size 
    $System_Drawing_Size.Width = 104 
    $System_Drawing_Size.Height = 24 
    $Checkboxes[-1].Size = $System_Drawing_Size 
    $Checkboxes[-1].TabIndex = $i 
    $Checkboxes[-1].text = $_ 
    $System_Drawing_Point = New-Object System.Drawing.Point 
    $System_Drawing_Point.X = 60 
    $System_Drawing_Point.Y = 21 + $y 
    $Checkboxes[-1].Location = $System_Drawing_Point 
    $Checkboxes[-1].DataBindings.DefaultDataSourceUpdateMode = 0 
    $Checkboxes[-1].name = "server" 
    $y = $y + 20 
    $form1.Controls.Add($Checkboxes[-1]) 
} 
+1

+1使用數組來存儲複選框。 – 2010-09-10 02:49:05

+0

優秀!非常感謝您的幫助,我一定會使用您建議的方法。 – Yanagi 2010-09-10 20:46:30