Entwickler-Ecke

WinForms - Wertzuweisung auf Textboxen vereinfachen


JohnDyr - Sa 05.01.19 18:59
Titel: Wertzuweisung auf Textboxen vereinfachen
Hallo nochmal,

habe eine abschließende Frage für heute, bevor ich in den "Feierabend" gehe. Gibt es elegante Wege/Methoden den folgenden Codeabschnitt zu vereinfachen? Man erkennt, das praktisch immer wieder das gleiche ausgeführt wird...


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
                // Contact person data 2
                TbContactDepartment2.Text = MasterDAO.GetContactDepartment(Module, 2, Id);
                TbContactName2.Text = MasterDAO.GetContactName(Module, 2, Id);
                TbContactMail2.Text = MasterDAO.GetContactMail(Module, 2, Id);
                TbContactPhone2.Text = MasterDAO.GetContactPhone(Module, 2, Id);
                TbContactMobile2.Text = MasterDAO.GetContactMobile(Module, 2, Id);
                TbContactFax2.Text = MasterDAO.GetContactFax(Module, 2, Id);

                // Contact person data 3
                TbContactDepartment3.Text = MasterDAO.GetContactDepartment(Module, 3, Id);
                TbContactName3.Text = MasterDAO.GetContactName(Module, 3, Id);
                TbContactMail3.Text = MasterDAO.GetContactMail(Module, 3, Id);
                TbContactPhone3.Text = MasterDAO.GetContactPhone(Module, 3, Id);
                TbContactMobile3.Text = MasterDAO.GetContactMobile(Module, 3, Id);
                TbContactFax3.Text = MasterDAO.GetContactFax(Module, 3, Id);

                // Contact person data 4
                TbContactDepartment4.Text = MasterDAO.GetContactDepartment(Module, 4, Id);
                TbContactName4.Text = MasterDAO.GetContactName(Module, 4, Id);
                TbContactMail4.Text = MasterDAO.GetContactMail(Module, 4, Id);
                TbContactPhone4.Text = MasterDAO.GetContactPhone(Module, 4, Id);
                TbContactMobile4.Text = MasterDAO.GetContactMobile(Module, 4, Id);
                TbContactFax4.Text = MasterDAO.GetContactFax(Module, 4, Id);


Delete - So 06.01.19 02:48

- Nachträglich durch die Entwickler-Ecke gelöscht -


Th69 - So 06.01.19 11:34

Gerade dafür wäre doch ein eigenes UserControl ideal (für die sechs TextBoxen) - ich nehme mal an, daß diese alle gleichartig zueinander angeordnet sind.
Und von der Form aus könntest du dann eine Liste dieser UserControls verwalten und somit dann per Index die Daten (Eigenschaften) befüllen.


JohnDyr - So 06.01.19 12:40

Zitat:
Fraglich ist, warum du pro Person sechs eigene Textboxen brauchst?!


Ich habe eine Art Visitenkarte TabControl erstellt. Darin habe ich 6 Tabs. Das ist ziemlich benutzerfreundlich. Aber du hast mich auf eine Idee gebracht! Ich kann ja einfach eine ComboBox machen in der ausgewählt wird, welche Person angezeigt werden soll.

Zitat:
Gerade dafür wäre doch ein eigenes UserControl ideal (für die sechs TextBoxen) - ich nehme mal an, daß diese alle gleichartig zueinander angeordnet sind.
Und von der Form aus könntest du dann eine Liste dieser UserControls verwalten und somit dann per Index die Daten (Eigenschaften) befüllen.


Also noch kann ich mir ich nicht vorstellen, wie das umzusetzen wäre. Die "Hauptform" ist übrigens auch schon ein Usercontrol. Außerdem verwende ich aktuell ein TabControl.


jfheins - So 06.01.19 13:49

user profile iconJohnDyr hat folgendes geschrieben Zum zitierten Posting springen:

Also noch kann ich mir ich nicht vorstellen, wie das umzusetzen wäre. Die "Hauptform" ist übrigens auch schon ein Usercontrol. Außerdem verwende ich aktuell ein TabControl.


Dann hast du ja schon Erfahrung ;-)

Im Gunde teilst du dein Problem (Daten von vielen Personen schön anzeigen) auf in zwei Teilprobleme: Daten von vielen Personen anzeigen und eine Person schön anzeigen.

Also machst du ein Usercontrol, um eine Person schön anzuzeigen und benutzt dein Tabcontrol oder eine Combobox um die Vielzahl abzubilden. In deinem Code sollte dann soetwas vorkommen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
foreach (var person in Persons)
{
  var userControl = new MyUserControl(); // Musst du neu anlegen, gruppiert die Textboxen
  userControl.Person = person; // Daten zuweisen

  var tab = new Tab() // Neue Steite im TabControl, bin mir gerade nicht mehr sicher wie das geht
  tab.Content = userControl;
}

Das soll jetzt nur schematisch sein. Aber überführst du die Liste von Personen in eine Menge an Tabs in deinem Tabcontrol.


Delete - So 06.01.19 14:26

- Nachträglich durch die Entwickler-Ecke gelöscht -