1

我遇到了 ForEach 循环的问题。我试图循环遍历多个相同类型的变量,只是增加不同。我试图根据同一行的标签是否有文本来更改文本框文本。

这就是我如何为每个标签编写和 IF 语句的方法,但我正在寻找一种通过 ForEach 循环循环这些块中的每一个的方法。我总共有 8 个标签和文本框。

这是代码:(我相信你会弄清楚我在追求什么:))

IF ( $Label1.Text.Length -ne 0 ) 
{ 
    $Label1.Visible = $true
    $TextBox1.Visible = $true

    $TextBox1.Text = ( "Enter new name for " + $Label1.Text ) 
}

ForEach 的例子

$Count = 1..8

$Count | ForEach-Object {

     IF ( $Label($_).Text.Length -ne 0 )
     {
          $Label($_).Visible = $true
          $TextBox($_).Visible = $true

          $TextBox($_).Text = ( "Enter new name for " + $Label($_).Text )
     }
}

ETC...

我尝试将变量放在数组中并以这种方式循环,但当然数组将类型更改为字符串并且它不起作用......

4

2 回答 2

1

为此,您可以使用 Get-Variable cmdlet:

 1..8 | ForEach-Object {

     if ( (Get-Variable "Label$_").Value.Text.Length -ne 0 )
     {
         (Get-Variable "Label$_").Value.Visible = $true
         (Get-Variable "Label$_").Value.Visible = $true
         (Get-Variable "Label$_").Value.Text = ( "Enter new name for " + (Get-Variable "Label$_").Value.Text )
     }
}
于 2013-08-06T12:10:32.077 回答
1

试一试,我无法使用标签和文本框对象对其进行测试,但它可以更好地调整它:

 1..8  | ForEach-Object {

     IF ( (iex "`$Label$_.Text.Length") -ne 0 )
     {
        iex  "`$Label$_.Visible = `$true"
        iex  "`$TextBox$_.Visible = `$true"

        iex  "`$TextBox$_.Text = 'Enter new name for ' + `$Label$_.Text"
     }
}
于 2013-08-06T12:04:38.910 回答