Hallo Zusammen Ich habe folgende Frage. Wie kann man mehrere Objekte in einer Schleife bearbeiten? Ich will die Eigenschaften Eines der Acht Buttons verändern, wie es der Beispiel unten zeigt. Private Sub btnPortAPinSignal0_Click(...) _ Handles btnPortAPinSignal0.Click, btnPortAPinSignal1.Click, _ btnPortAPinSignal2.Click, btnPortAPinSignal3.Click, _ btnPortAPinSignal4.Click, btnPortAPinSignal5.Click, _ btnPortAPinSignal6.Click, btnPortAPinSignal7.Click If sender.Equals(btnPortAPinSignal0) Then If ... Then btnPortAPinSignal0.Text = "..." Else _ btnPortAPinSignal0.Text = "..." End If If sender.Equals(btnPortAPinSignal1) Then If ... Then btnPortAPinSignal1.Text = "..." Else _ btnPortAPinSignal1.Text = "..." End If End Sub Ich weiß leider nicht, nach welchen Stichpunkt ich in der MSDN-Library suchen muss. Also wäre ich für jede Hilfe dankbar.
Ich habe schon versucht den String "btnPortAPinSignal" mit dem Intervall einer For-Schleife zu verknüpfen. Deshalb die nummerierten Namen.
Valentin R. schrieb: > Ich habe schon versucht den String "btnPortAPinSignal" mit dem Intervall > einer For-Schleife zu verknüpfen. Deshalb die nummerierten Namen. Du hättest anstelle von einzeln durchnummerierten Variablen ein Array benutzen sollen. Die Namen der Variablen existieren nicht mehr, wenn das Programm einmal läuft. Daher kommst du da mit Stringverarbeitung nicht weiter. Vielleicht kannst du dir ja ein Array von Referenzen auf deine Objekte anlegen (da kenn ich VB zu wenig), in welches du Verweise auf deine Objekte anlegst.
Habe es geschaft. Ich verstehe leider nicht wieso, aber man muss die deklaration in der Ereignis-Methode machen, Modulweit geht es irgendwie nicht. Dim ObjGroup(7) As Button ObjGroup(0) = btnPortAPinSignal0 : ObjGroup(1) = btnPortAPinSignal1 ObjGroup(2) = btnPortAPinSignal2 : ObjGroup(3) = btnPortAPinSignal3 ObjGroup(4) = btnPortAPinSignal4 : ObjGroup(5) = btnPortAPinSignal5 ObjGroup(6) = btnPortAPinSignal6 : ObjGroup(7) = btnPortAPinSignal7 Danke für die Anregungen.
Karl heinz Buchegger schrieb: > Valentin R. schrieb: >> Ich habe schon versucht den String "btnPortAPinSignal" mit dem Intervall >> einer For-Schleife zu verknüpfen. Deshalb die nummerierten Namen. > > Du hättest anstelle von einzeln durchnummerierten Variablen ein Array > benutzen sollen. Ja. > Die Namen der Variablen existieren nicht mehr, wenn das Programm einmal > läuft. Daher kommst du da mit Stringverarbeitung nicht weiter. Nein. Es ginge mit Type Introspection...auch in einem aktuellen VB (in C# sieht das in etwa so aus wie unten)
1 | // get the name of the sender if it is a control
|
2 | if (!(sender is Control)) return; |
3 | var senderName = ((Control)sender).Name; |
4 | |
5 | // create new textBox name
|
6 | var textBoxName = senderName.Replace("button", "textBox"); |
7 | |
8 | // if this contains a field with name textBoxName
|
9 | var textBoxFieldInfo = this.GetType().GetField(textBoxName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); |
10 | // get that object (no type/null checks!)
|
11 | var textBoxObject = textBoxFieldInfo.GetValue(this); |
12 | // get TextBox.Text property for this object
|
13 | var textBoxPropertyInfo = textBoxObject.GetType().GetProperty("Text"); |
14 | // and set the value
|
15 | textBoxPropertyInfo.SetValue(textBoxObject, senderName + "->" + textBoxName, null); |
> > Vielleicht kannst du dir ja ein Array von Referenzen auf deine Objekte > anlegen (da kenn ich VB zu wenig), in welches du Verweise auf deine > Objekte anlegst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.