schminor

Windows Forms cSharp bestimmte Textfelder mit Schleife ausblenden

Hallo,

ich habe eine Windows Forms Anwendung in c#.

Auf einer Form gibt es unter anderen Textfelder txtParameter1 bist txtParameter10.
Aber auch noch einige andere Textfelder, Buttons, ...
Dann gibt es auch noch numericUpDown.
Nun möchte ich die Textfelder (txtParameter1 bist txtParameter10) je nach Wert des numericUpDown ein bzw. ausblenden.
Sprich wenn z.B. numericUpDown = 5, dann sollen die txtParameter6 - txtParameter10 ausgeblendet werden.

Es sollte aber keine Liste verwendet werden.

Wie löst man so etwas am Besten in einer Schleife?

Danke
Norbert
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 225361

Url: https://administrator.de/forum/windows-forms-csharp-bestimmte-textfelder-mit-schleife-ausblenden-225361.html

Ausgedruckt am: 18.05.2025 um 16:05 Uhr

colinardo
colinardo 26.12.2013 aktualisiert um 17:54:17 Uhr
Goto Top
Hallo Norbert,
könntest du so machen (für dein Beispiel wenn der Parameter immer eins größer ist als der Wert des numericUpDown-Feldes):
for (int i = (int)numericUpDown1.Value + 1; i <= 10; i++)
{
   this.Controls["txtParameter" + i].Visible = false;  
}
Denke das Prinzip wie du Controls mit Namen ansprichst war dein Knackpunkt face-wink

Grüße Uwe
Schminor
Schminor 26.12.2013 um 18:35:37 Uhr
Goto Top
Perfekt. Danke ja genau das war mein Knackpunkt.
Aber jetzt hätte ich noch eine Frage.

Im Testprogramm funktioniert das einwandfrei.
Aber im echten Programm liegen die TextBoxen auf einem Panel in einem Tab.
Und dann kommt der Fehler "Objektverweis wurde nicht auf eine Objektinstanz festgelegt".

Ich denk da fehlt mir noch der Bezug aufs Panel und Tab.

Danke
colinardo
colinardo 26.12.2013 aktualisiert um 18:46:49 Uhr
Goto Top
das ist kein Problem das machst du so:
for (int i = (int)numericUpDown1.Value + 1; i <= 10; i++)
{
  tabControl1.TabPages["tabPage2"].Controls["panel1"].Controls["txtParameter" + i].Visible = false;  
}
tabControl1 = Name des TabControls
tabPage2 = Name des Tabs
panel1 = Name des Panels auf dem Tab

Grüße Uwe
Schminor
Schminor 26.12.2013 um 19:02:23 Uhr
Goto Top
Jetzt aber. Danke nochmals.
Und so werden aus 2 Seiten Code 20 Zeilen face-wink

for (int i = 3; i <= updParamExtruderZones.Maximum; i++)
{
if (i <= zones)
{
this.panParamExtruder.Controls["txtParamExtruderTempHead" + i].Visible = true;
this.panParamExtruder.Controls["txtParamExtruderTempSP" + i].Visible = true;
this.panParamExtruder.Controls["txtParamExtruderTempAV" + i].Visible = true;
this.panParamExtruder.Controls["txtParamExtruderTempUnit" + i].Visible = true;
//this.tabTestRun.TabPages["tabTestRunParam"].panParamExtruder.Controls["txtParamExtruderTempHead" + i].Visible = true;
}
else
{
this.panParamExtruder.Controls["txtParamExtruderTempHead" + i].Visible = false;
this.panParamExtruder.Controls["txtParamExtruderTempSP" + i].Visible = false;
this.panParamExtruder.Controls["txtParamExtruderTempAV" + i].Visible = false;
this.panParamExtruder.Controls["txtParamExtruderTempUnit" + i].Visible = false;
this.panParamExtruder.Controls["txtParamExtruderTempSP" + i].Text = "";
this.panParamExtruder.Controls["txtParamExtruderTempAV" + i].Text = "";
}
}