Entwickler-Ecke
Sonstiges (.NET) - CheckForEmptyFields Methode
sk-io - Mi 30.05.12 14:39
Titel: CheckForEmptyFields Methode
Hallo,
Ich habe in mehreren Apps eine methode die normalerweise CheckForEmptyFields heisst und genau dieses tut - hier ist ein kleiner Auschnitt:
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: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| private bool NMRCheckForEmptyFields() { bool r = true; if (comboBox_NMRNames.Text == "") { comboBox_NMRNames.BackColor = Color.Red; r = false; } else { comboBox_NMRNames.BackColor = Color.White; }
if (numericUpDown_NMRQuantity.Value == 0) { numericUpDown_NMRQuantity.ForeColor = Color.Red; r = false; } else { numericUpDown_NMRQuantity.ForeColor = Color.Black; } if (textBox_NMRDescription.Text == "") { textBox_NMRDescription.BackColor = Color.Red; r = false; } else textBox_NMRDescription.BackColor = Color.White;
return r; } |
Sehr linear und langweilig das ganze. Benutze aehnlichere Methoden seit den Win32asm tagen :)
Nun bin ich immer noch sehr gruen hinter den Ohren aber koennte man dies nicht um ein Interface wickeln? Sodass ich CheckForEmptyFields bloss ein Array von textboxes, comboboxes oder aehnlicherem senden kann und die mir dann die Felder Rot oder Weiss pinselt?
Ich bueffele gerade an der Theory fuer Interfaces doch weiss ich nicht wo genau anfangen? Eine eigene Klasse?
Christian S. - Mi 30.05.12 14:46
Ich denke nicht, dass die verschiedenen Komponentenklassen ein Interface implementieren, was die von Dir gewünschte Funktionalität enthält.
Da wirst Du schon ein bisschen manueller vorgehen müssen: Übergebe der Methode ein Component[]-Array. Für jedes Element des Arrays prüfst Du, welchen Typ das hat und castest es dann in den richtigen Typ, um den entsprechenden Vergleich zu machen.
sk-io - Mi 30.05.12 19:23
Ich wuerde gerne mal wissen wieviele von uns denn tatsaechlich individuelle Validating events schreiben. :) Bei einem 'normaler' Form (Name, Addresse, usw) waeren dies schon 6+ die bloss checken wurden ob es IsNullOrEmpty waere. Ich sehe ein dass ein ValidateChildren() sehr nuetzlich sein kann, doch ist es fuer Otto NormalCoder ?
sk-io - Mi 30.05.12 19:32
Christian S. hat folgendes geschrieben : |
Da wirst Du schon ein bisschen manueller vorgehen müssen: Übergebe der Methode ein Component[]-Array. Für jedes Element des Arrays prüfst Du, welchen Typ das hat und castest es dann in den richtigen Typ, um den entsprechenden Vergleich zu machen. |
versuchen kann ichs ;)
ujr - Do 31.05.12 09:20
sk-io hat folgendes geschrieben : |
Bei einem 'normaler' Form (Name, Addresse, usw) waeren dies schon 6+ die bloss checken wurden ob es IsNullOrEmpty waere. |
Das lässt sich stark reduzieren, insbesondere, wenn die Prüfmethoden identisch sind.
So könnte man für alle Textboxen die selben Validating/Validated-Ereignisbehandlungen verwenden, für alle NumericUpDown die selben usw. Man kann sogar, da die Methoden immer die selbe Signatur haben, überhaupt für alle Ereignisse die selbe Methode verwenden und überprüft den Typ des Senders.
Schließlich könnte man die Ereignisse auch mit anonymen Methoden oder Lambda-Expressions bearbeiten und diese alle in einer speziellen Methode zuweisen (also auch zentral).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!