| |
| Was bringt der 3D-Druck in der Elektronik?, eine Pressemitteilung
|
Autor
|
Thema: Form.Name mittels Index in Schleife ansprechen (899 / mal gelesen)
|
Gigerota Mitglied
Beiträge: 561 Registriert: 17.01.2006 Windows 10 AutoCAD LT 2017 Solidworks 2016
|
erstellt am: 22. Mai. 2018 13:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Bin ganz neu hier im c# Forum und auch C#-Anfänger! Ich brauche Hilfe. Möchte in einer for Schleife verschiedene TextBoxen auslesen. Diese TextBoxen haben von mir als Name einen Text mit fortlaufender Nummer erhalten: tb_AdrGeraete1 ( ...bis 8) Ich hatte gehofft, ich kann einfach der Funktion einen Index hinzugeben: void tb_AdrGeraete[i]TextChanged(object sender, EventArgs e) { } ...und dann: sAdrGeraete = this.tb_AdrGeraete[i].Text; Wäre zu schön gewesen... Könnt ihr mir helfen?..bin blutiger Anfänger.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
M-Ott Mitglied
Beiträge: 234 Registriert: 21.11.2008 Win7 64 Pro SP1 i5 2.8 GHz 8 GB RAM
|
erstellt am: 22. Mai. 2018 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Gigerota
|
Gigerota Mitglied
Beiträge: 561 Registriert: 17.01.2006 Windows 10 AutoCAD LT 2017 Solidworks 2016
|
erstellt am: 22. Mai. 2018 14:36 <-- editieren / zitieren --> Unities abgeben:
Bitte, ich bin Anfänger. Mit deinem Hinweis, kann ich nichts anfangen. Nochmal: Der User wählt eine Anzahl Geräte aus. Nun werden genau so viele TextBoxen angezeigt, wo er jeweils eine Zahl reinschreiben kann. Diese TextBoxen heißen : tb_GeraetAdr1, tb_GeraetAdr2, usw. Ich will auslesen, was der User in die TextBoxen rein geschrieben hat. Kannst du mir die Programmzeile(n) aufschreiben? Gäbe es nur 1 Textbox, wäre mein Code: void tb_GeraetAdr1TextChanged(object sender, EventArgs e) { sAdrGeraete = this.tb_GeraetAdr1.Text; } Ich möchte die 1 durch den Index der Schleife ersetzen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
M-Ott Mitglied
Beiträge: 234 Registriert: 21.11.2008 Win7 64 Pro SP1 i5 2.8 GHz 8 GB RAM
|
erstellt am: 23. Mai. 2018 06:48 <-- editieren / zitieren --> Unities abgeben: Nur für Gigerota
Ich habe Dich so verstanden, dass Du der Eigenschaft TextBox.Name den Wert "tb_AdrGeraeteX" zugewiesen hast. Wenn ich Dich richtig verstanden habe, kannst Du folgendermaßen vorgehen: sender ist das Objekt, dass den Event getriggert hat, in deinem Fall die TextBox, also kannst Du mit sender.Name auf den Namen der TextBox zugreifen, aber da das System nicht weiß, dass sender überhaupt eine TextBox ist und deshalb auch nicht weiß, welche Eigenschaften und Methoden es besitzt, musst Du sender mit einem cast als TextBox definieren. Wenn Du mit string myString = (TextBox)sender.Name; darauf zugreifst, müsste das funktionieren. P.s.: Es gibt für C# deutlich bessere Foren, als dieses. ------------------ Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gigerota Mitglied
Beiträge: 561 Registriert: 17.01.2006 Windows 10 AutoCAD LT 2017 Solidworks 2016
|
erstellt am: 23. Mai. 2018 10:25 <-- editieren / zitieren --> Unities abgeben:
|
M-Ott Mitglied
Beiträge: 234 Registriert: 21.11.2008 Win7 64 Pro SP1 i5 2.8 GHz 8 GB RAM
|
erstellt am: 23. Mai. 2018 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für Gigerota
Ich fühle mich ja geschmeichelt, aber Experte bin ich noch lange nicht. Nichts für ungut, aber ich habe Dir die Lösung da hin geschrieben, da gibt es nichts mehr, was man nicht verstehen könnte. ------------------ Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MachMaPlatzDa Mitglied Informatiker
Beiträge: 1 Registriert: 05.09.2018
|
erstellt am: 05. Sep. 2018 15:05 <-- editieren / zitieren --> Unities abgeben: Nur für Gigerota
Hi, du kannst über das Form die Controls auflisten in einer Schleife. Also z.B. Form1.Controls hier kannst du mit dem Namen prüfen ob's passt, also mit control.Name.StartsWith("tb_GeraetAdr") der Name enthält ja dann auch gleichzeitig deinen Index, und über einen CAST (eine Umwandlung) kannst das allgemeine Control als Textbox ansprechen. z.B.: ((TextBox)control).Text Hoffe das hilft die ein wenig weiter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |