Benutzer mit den meisten Antworten
Variablennamen in einer for Schleife ändern

Frage
-
Hallo Profis
habe eine Frage wegen einer for Schleife.
ich habe eine Anzahl Labelfelder die alle mit $Label beginnen und dann mit einer fortlaufenden Zahl.
Diese werden je nach Funktion unsichtbar oder sichtbar.Ich verzweifle weil ich jetzt nur in der Funktion dies so löse
function LabelEntfernen
{
$label1.Visible = $False
$label2.Visible = $False
$label3.Visible = $False
$label4.Visible = $False
$label5.Visible = $False
$label6.Visible = $False
$label7.Visible = $False
$label8.Visible = $False
$label9.Visible = $False
$label10.Visible = $False
$label11.Visible = $False
$label12.Visible = $False
}Aber ich möchte eine For Schleife die automatisch durchläuft ungefähr so
for ($i=0;$i -le 12; $i++){"$label"+$i.visible = $False
leider bekomme ich das mit dem Labelnamen und der Zähler Variblen nicht hin.
Danke im voraus
Gruß Karl
Antworten
-
Hi,
viel einfacher und kontrolierbarer ist es wenn man alle Controls (Label,Textbox etc. ) einer Form oder des Parent-Control aufzählen lässt und von denen dann die Eigenschaften bearbeitet. In deinem Fall z.b.
#Wobei $Parentcontrol das Form, ein Panel,eine Groupbox, oder ein Tablelayoutpanel sein kann. foreach($Label in $($ParentControl.Controls |?{$_ -is [System.Windows.Forms.Label]})){ $label.Visible = $false }
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 13. August 2014 11:18
-
dann haette ich noch den:
(Get-variable -name ("Label" + $i)).value.Visible = $False
Wobei die Fehlermeldung eigentlich daruf hinweist, dass er nur mit der $label11 Probleme hat.- Bearbeitet brima Dienstag, 25. März 2014 14:25
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 13. August 2014 11:18
Alle Antworten
-
Hallo,
meinst Du sowas:
PS E:\scripte> $label1 = "ABC" PS E:\scripte> $i = 1 PS E:\scripte> $label1 ABC PS E:\scripte> $i 1 PS E:\scripte> set-variable -name ("Label" + $i) -value "XYZ" PS E:\scripte> $label1 XYZ PS E:\scripte>
Beste Gruesse
brima
- Bearbeitet brima Dienstag, 25. März 2014 14:12
-
habe das mal in einer for Schleife ausprobiert, kommt leider Fehler
function LabelEntfernen
{
for ($i=0;$i -le 12; $i++)
{
set-variable -name ("Label" + $i).Visible = $False
}Set-Variable : Das Argument kann nicht an den Parameter "Name" gebunden werden, da es NULL ist.
In Zeile:38 Zeichen:24
+ set-variable -name ("Label" + $i).Visible = $False
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Set-Variable], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SetVariableCommand
-
leider kommt dort auch ein Fehler
function LabelEntfernen
{
for ($i=1;$i -le 12; $i++)
{
(Get-variable -name ("$label" + $i)).Visible = $False
}Die Eigenschaft "Visible" wurde für dieses Objekt nicht gefunden. Vergewissern Sie sich, dass es die Eigenschaft gibt und dass
sie festgelegt werden kann.
In Zeile:38 Zeichen:5
+ (Get-variable -name ("$label" + $i)).Visible = $False
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound -
Das war die ganze Fehlermeldung
Get-variable : Es kann keine Variable mit dem Namen "$label11" gefunden werden.
In Zeile:38 Zeichen:6
+ (Get-variable -name ('$label' + $i)).Visible = $False
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: ($label11:String) [Get-Variable], ItemNotFoundException
+ FullyQualifiedErrorId : VariableNotFound,Microsoft.PowerShell.Commands.GetVariableCommand
Die Eigenschaft "Visible" wurde für dieses Objekt nicht gefunden. Vergewissern Sie sich, dass es die Eigenschaft gibt und dass
sie festgelegt werden kann.
In Zeile:38 Zeichen:5
+ (Get-variable -name ('$label' + $i)).Visible = $False
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound -
dann haette ich noch den:
(Get-variable -name ("Label" + $i)).value.Visible = $False
Wobei die Fehlermeldung eigentlich daruf hinweist, dass er nur mit der $label11 Probleme hat.- Bearbeitet brima Dienstag, 25. März 2014 14:25
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 13. August 2014 11:18
-
Habs rausbekommen,bei mir nur mit - 1 weil so gewollt.
function LabelEntfernen
{
$LCount=(Get-variable -name ("label*")).count
$LCount = $LCount -1
for ($i=1;$i -le $LCount; $i++)
{
(Get-variable -name ("label" + $i)).value.Visible = $False
}
}- Als Antwort markiert Karl,E Mittwoch, 26. März 2014 08:27
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Mittwoch, 13. August 2014 11:17
-
Hallo,
du bist neu hier:
Lies bitte noch folgenden Beitrag und handele danach. Danke.
-
Hallo,
jetzt hast Du nur deine Loesung als Antwort makiert. Der Sinn ist aber die Antowrten zu markieren, aus denen sich dann deine gesamt Loesung ergeben haben. :-) Damit den Helfenden das Helfen auch Spass macht.
Man darf auch mehr als eine Antwort markieren. Das markieren eigeneer Antworten bringt im uebrigen keine Punkte. :-)
Beste Gruesse
brima -
Hi,
viel einfacher und kontrolierbarer ist es wenn man alle Controls (Label,Textbox etc. ) einer Form oder des Parent-Control aufzählen lässt und von denen dann die Eigenschaften bearbeitet. In deinem Fall z.b.
#Wobei $Parentcontrol das Form, ein Panel,eine Groupbox, oder ein Tablelayoutpanel sein kann. foreach($Label in $($ParentControl.Controls |?{$_ -is [System.Windows.Forms.Label]})){ $label.Visible = $false }
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 13. August 2014 11:18