2017-09-15 15 views
0

私はこれを自分で見つけようとしていましたが、質問のフレーズ方法については完全にはわかりません。本質的に私がここでやっていることは、名前の配列を取って、各名前のチェックボックスを作成することです。編集:私は以下のコードスニペットも動作していたと思ったが、これは実際には動作していない可能性がありますか?forループのチェックボックスにプロパティを設定しようとしています

New-object System.Windows.Forms.CheckBox | New-Variable -Name ("checkbox" + $_) 

私が抱えている主な問題は、これらの変数の名前を付けたチェックボックスを実際に作成したらどうしたらいいのですか?基本的に各反復の変数名を取得する方法は、$ checkbox.marginとそのような設定を行います。私は下のスクリプト全体を投稿しました。それは非常にWIPです。私は奇妙なものがいくつかあることを知っていますが、これを修正することができたらそれを並べ替えるつもりです。

$form = New-Object System.Windows.Forms.Form 
$flowlayoutpanel = New-Object System.Windows.Forms.FlowLayoutPanel 
$buttonOK = New-Object System.Windows.Forms.Button 


$usernames = "andrew", "beth", "charlie", "dave", "james", "george" 
$totalvalues = ($usernames.count) 

$formsize = 85 + (30 * $totalvalues) 
$flowlayoutsize = 10 + (30 * $totalvalues) 
$buttonplacement = 40 + (30 * $totalvalues) 

$form_Load = { 
    0..$totalvalues|%{ 
     New-object System.Windows.Forms.CheckBox | New-Variable -Name ("checkbox" + $_) 
     ('$checkbox' + $_).Margin = '10, 8, 0, 0' 
     $checkbox.Margin = '10, 8, 0, 0' 
     $checkbox.Name = 'checkbox' + $_ 
     $checkbox.Size = '200, 22' 
     $checkbox.Text = "" + $usernames[$_] 
     $checkbox.TextAlign = 'MiddleLeft' 
     $flowlayoutpanel.Controls.Add($checkbox) 
    }  
} 


$form.Controls.Add($flowlayoutpanel) 
$form.Controls.Add($buttonOK) 
$form.AcceptButton = $buttonOK 
$form.AutoScaleDimensions = '8, 17' 
$form.AutoScaleMode = 'Font' 
$form.ClientSize = "500 , $formsize" 
$form.FormBorderStyle = 'FixedDialog' 
$form.Margin = '5, 5, 5, 5' 
$form.MaximizeBox = $False 
$form.MinimizeBox = $False 
$form.Name = 'form1' 
$form.StartPosition = 'CenterScreen' 
$form.Text = 'Form' 
$form.add_Load($form_Load) 

$flowlayoutpanel.BorderStyle = 'FixedSingle' 
$flowlayoutpanel.Location = '48, 13' 
$flowlayoutpanel.Margin = '4, 4, 4, 4' 
$flowlayoutpanel.Name = 'flowlayoutpanel1' 
$flowlayoutpanel.Size = "400, $flowlayoutsize" 
$flowlayoutpanel.TabIndex = 1 


$buttonOK.Anchor = 'Bottom, Right' 
$buttonOK.DialogResult = 'OK' 
$buttonOK.Location = "383, $buttonplacement" 
$buttonOK.Margin = '4, 4, 4, 4' 
$buttonOK.Name = 'buttonOK' 
$buttonOK.Size = '100, 30' 
$buttonOK.TabIndex = 0 
$buttonOK.Text = '&OK' 


$form.ShowDialog() 

答えて

0

は、私はそれをこの方法で行う場合は、[OK]ボタンがヒットしたら、何がチェックボックスの状態を確認するための最良の方法だろう、このコード

$form_Load = { 
    foreach($user in $usernames){ 
     $DynamicCheckBox = New-Variable -Name ("checkbox" + $user) 
     $DynamicCheckBox = New-object System.Windows.Forms.CheckBox 

     $DynamicCheckBox.Margin = '10, 8, 0, 0' 
     $DynamicCheckBox.Name = 'checkbox' + $_ 
     $DynamicCheckBox.Size = '200, 22' 
     $DynamicCheckBox.Text = "" + $user 
     $DynamicCheckBox.TextAlign = 'MiddleLeft' 
     $flowlayoutpanel.Controls.Add($DynamicCheckBox) 
    }  
} 
+0

おかげであなたのforeacheachループを置き換えますか?それとも別の質問ですか? – Sheep

+0

セプレート質問を作成します。これがあなたの問題を解決した場合、これを答えとしてマークしてください – guiwhatsthat

関連する問題