schminor
Goto Top

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

Content-Key: 225361

Url: https://administrator.de/contentid/225361

Printed on: April 19, 2024 at 03:04 o'clock

Member: colinardo
colinardo Dec 26, 2013 updated at 16:54:17 (UTC)
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
Member: Schminor
Schminor Dec 26, 2013 at 17:35:37 (UTC)
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
Member: colinardo
colinardo Dec 26, 2013 updated at 17:46:49 (UTC)
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
Member: Schminor
Schminor Dec 26, 2013 at 18:02:23 (UTC)
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 = "";
}
}