Entwickler-Ecke
Basistechnologien - Controls nach einem Muster durchsuchen...
dinazavric - Do 05.05.11 13:29
Titel: Controls nach einem Muster durchsuchen...
Hallo,
ich möchte den folgenden Code in einer Schleife ausführen, so, dass man bspw. bei 10 Controls nicht für jeden das Gleiche schreiben muss:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if ((Px_Name.SelectedItem != null) || (Px_Value.SelectedItem != null)) { DataRow newRow2 = dataSetPro.Tables["Parameters"].NewRow(); newRow2["ParameterName"] = Px_Name.Text.ToString(); newRow2["ValueDefinition"] = Px_Value.Text.ToString(); dataSetPro.Tables["Parameters"].Rows.Add(newRow2); } |
und zwar wird statt Px eben irgendwas zwischen P1 und P10 genommen. Wie kann ich es machen?
dark-destination1988 - Do 05.05.11 13:46
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
|
for (int i=0;i<10;i++) {
DataRow newRow2 = dataSetPro.Tables["Parameters"].NewRow(); newRow2["ParameterName"] = Px_Name.Text.ToString(); newRow2["ValueDefinition"] = Px_Value.Text.ToString(); dataSetPro.Tables["Parameters"].Rows.Add(newRow2); } |
wenn dann für px jeweils etwas anderes reinkommt nehm doch einen switch
dinazavric - Do 05.05.11 14:10
dark-destination1988 hat folgendes geschrieben : |
| wenn dann für px jeweils etwas anderes reinkommt nehm doch einen switch |
dann muss ich ja beim switch 10 mal das gleiche schreiben... ich möchte ja dass die Px_Name und Px_Value irgendwie durchlaufen, irgendwie in der Art P[i]_Name und P[i]_Value für i=1..10
Ich weis nur leider nicht wie man es richtig macht...
bakachan - Do 05.05.11 14:33
dinazavric hat folgendes geschrieben : |
ich möchte ja dass die Px_Name und Px_Value irgendwie durchlaufen, irgendwie in der Art P[i]_Name und P[i]_Value für i=1..10 |
Du nennst deine Lösung hier quasi selbst.
Auf was kann man per Indexierung zugreifen?
Arrays, Listen oder ähnliches.
Also nicht Variablen P1_name, P2_name .. usw sondern ein array names auf das du mit dem index zugreifst.
dinazavric - Fr 06.05.11 09:55
bakachan hat folgendes geschrieben : |
| Also nicht Variablen P1_name, P2_name .. usw sondern ein array names auf das du mit dem index zugreifst. |
Erstens, danke für den Tipp. Ich habe gerade einen Link gefunden, wo das Thema etwas genauer erklärt wird:
http://msdn.microsoft.com/de-de/library/aa289500%28v=vs.71%29.aspx
Trotzdem verstehe ich nicht wie so ein Array erstellt wird. Unter dem oben angegebenen Link wird von Steuerelementen gesprochen, die neu erstellt werden. In meinem Fall gibt es sie schon. In den Bespielen gibt es auch eine List[Index]. Ich habe da aber leider nicht gefunden wo sie her kommt. Könnte mir jemand da etwas weiter Helfen?
Th69 - Fr 06.05.11 10:48
Wenn du schon die Steuerelemente im Designer erstellt hast, dann mußt du sie nochmal explizit auflisten:
C#-Quelltext
1: 2: 3: 4:
| Control[] controls; controls = new Control[] { P1_name, P2_name }; |
(je nachdem um was es sich bei den Controls handelt, so kannst du anstatt 'Control' dann auch die Spezialisierung z.B. TextBox verwenden.)
Besser wäre jedoch, wenn du auch diese Controls dynamisch im Code anlegen würdest (ich nehme mal an, diese sind nach einem math. (geordneten) Prinzip angeordnet).
dinazavric - Fr 06.05.11 12:47
Vielen Dank, jetzt habe ich es :-D:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| ComboBox[] NameControls, ValueControls; NameControls= new ComboBox[] { P1_Name, P2_Name, P3_Name, P4_Name, P5_Name }; ValueControls= new ComboBox[] { P1_Value, P2_Value, P3_Value, P4_Value, P5_Value };
for (int i = 0; i < 5; i++) { BindingSource bs = new BindingSource(); bs.DataSource = this.dataSet2; NameControls[i].DisplayMember = "Parameters.ParameterName"; NameControls[i].ValueMember = "Parameters.ParameterName"; NameControls[i].DataSource = bs; ValueControls[i].DisplayMember = "Parameters.ParameterProperties.ValueDefinition"; ValueControls[i].ValueMember = "Parameters.ParameterProperties.ParameterName"; ValueControls[i].DataSource = bs; } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!