Ich sonder mal ab was ich glaube zwischen den Zeilen und im Code zu sehen glaube.
Das hört sich nach eine Tabelle an in denen Zeilen von Artikeln(n) angezeigt werden. Das natürlichste wäre dann ein DataGridView an das ich eine Liste von Artikel(n) binde.
Das wäre dann einfach ein simple Zuweisung ala
C#-Quelltext
1: 2:
| List<Artikel> artikel = GetListOfArtikel(); meinLiebesDataGridView.DataSource = artikel; |
Nirgendwo wird da ein Controlname gebraucht.
Oder wenn die Darstellung im Grid zu simpel ist bzw. nicht hinnehmbare Einschränkungen mit sich bringt dann würde ich die besagten 7 Controls zu einem UserControl zusammenfassen dem ich ein get/set Property für einen Artikel verpasse. Die Zuordnung Artikel zu Controls auf diesem UsesControl würde ich dann über eine BindingSource machen. Da legt man dann die Zuordnung BindSource Property zu Control einfach im Designer fest im Code muss man dann auch nur wieder der BindingSource einen konkreten Artikel zuweisen. Dieses USerControl zeigst du dann halt 10 mal (oder so oft wie benötigt) auf der Form an (wenn es immer noch wie eine Liste angezeigt werden soll dann z.B. in einem TableLayoutPanel)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public Artikel Artikel { get { return meineLiebeBindingSource.DataSource as Artikel; } set { meineLiebeBindingSource.DataSource = value; } } |
Wieder wird nirgendwo der Controlname gebraucht. Selbst wenn du eine Abneigung gegen DataBinding hast ist der Ansatz mit dem UserControl immer noch gangbar. Dann hast du halt 7 Zuweisungen im getter/setter der Property. Da hier die Zuweisung eindeutig ist. Controls für Pos/Menge etc. wird es auf dem UserControl genau einmal geben. Immer noch kein magischer Name nötig
Zitat: |
Mir ist nicht klar, wie das Auslesen ohne die Adressierung der Eingabefelder mittels deren Namen funktionieren kann. |
Ich würde mit allen Mitteln verhindern wollen das die Zuordnung was in welchem Control angezeigt wird über irgendein Benamsungschema der Controls passiert.