none
Mit Foreach-Schleife Objekte verstecken RRS feed

  • Frage

  • Hallo zusammen,

    ich bin ein wenig verzeifelt und komm grad irgendwie nicht weiter.
    Ich habe mir eine GUI um Videos zu bearbeiten gebastelt und fand es sinnvoll nicht die Anzahl der Videos als beschränkenden Variable zu nehmen, da die Anzahl der Videos von 1 - 20 gehen kann, man aber nicht alles sehen soll, wollte ich über eine Foreach-Schleife und die Anzahl der Textboxvariablen am anfang alle Textfelder verstecken.

    Am Anfang habe ich es so gemacht:

    $video0.Visibility = 'Hidden'
    $video1.Visibility = 'Hidden'
    $video2.Visibility = 'Hidden'
    $video3.Visibility = 'Hidden'
    $video4.Visibility = 'Hidden'
    $video5.Visibility = 'Hidden'
    $video6.Visibility = 'Hidden'

    Nun ist das Problem, dass ich dann für jede neue Textbox eine neue Zeile brauche. Also dachte ich mir ich Pack das in eine Schleife:

    for ($i=1; $i -le ((Get-Variable -Name Video*).Count); $i++){'$video' + $i + ".visibility = 'Hidden'"}

    Als Ausgabe kommt  das gleiche wie Oben, allerdings eben nur als Ausgabe. Gesetzt wird nix.

    Kann mir da jemand weiterhelfen?

    Donnerstag, 15. März 2018 07:26

Antworten

Alle Antworten

  • Hi,

    probier's mal so:

    foreach ($Var in $(Get-Variable | Where-Object {$_.Name -like "Test*"})) {$Var.Visible = $False}

    MfG, Jannik


    Donnerstag, 15. März 2018 09:03
  • Oder stelle deine Variablen auf ein Array um. Hier kann man dann mt Indizes arbeiten:

    https://www.windowspro.de/script/arrays-powershell-anlegen-aendern-auslesen-sortieren-loeschen

    Donnerstag, 15. März 2018 09:42
  • Man sollte immer vermeiden, durchnummerierte Variablen zu verwenden. Noch schlimmer sind Variablen, die erst zur Laufzeit ihren Namen bekommen. Dafür gibt es Arrays und Hashtabellen.
    Freitag, 16. März 2018 10:55