Hallo,
ich habe mal diesen Thread hier erstellt
Notizprogramm Feature-Ideen.
Die Idee mit dem E-Mail-Versenden habe ich nun umgesetzt, funktioniert fehlerfrei. Jetzt bin ich an der Prüfung, ob alle Felder ausgefüllt sind, Fehlerbehandlungen etc habe ich schon, diese Prüfung soll nur an der rechten Seite kleine Labels anzeigen, wenn etwas leer ist. In dem Label steht dann nur "Absender fehlt". Ist das Feld ausgefüllt verschwindet das Label wieder.
Ich habe mal vor langer Zeit gelesen, es sei nicht so sinnvoll viele Dinge zu enablen und zu disablen, auf show zu setzen oder auf hide zu setzen, ... deshalb ändere ich einfach die Schriftfarbe. Die gesamte Oberflächensteuerung halte ich in einer Methode fest, die dann an verschiedenen Stellen aufgerufen wird, damit alles übersichtlich bleibt. Das Ganze sieht nun so aus:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Color rot = Color.Red;
Color weiß = Color.White;
lblPostausgangseverFehlt.ForeColor = !String.IsNullOrEmpty(edtHost.Text) ? weiß : rot;
lblPortFehlt.ForeColor = !String.IsNullOrEmpty(edtPort.Text) ? weiß : rot;
lblBenutzernameFehlt.ForeColor = !String.IsNullOrEmpty(edtBenutzername.Text) ? weiß : rot;
lblPasswortFehlt.ForeColor = !String.IsNullOrEmpty(edtPasswort.Text) ? weiß : rot;
lblAbsenderFehlt.ForeColor = !String.IsNullOrEmpty(edtAbsender.Text) ? weiß : rot;
lblEmpfaengerFehlt.ForeColor = !String.IsNullOrEmpty(edtEmpfeanger.Text) ? weiß : rot;
|
Dabei sind lbl die Labels an der rechten Seite und die edt die Textfelder der Eingabe.
Meine 1. Frage:
Die Labels Benutzername und Passwort reagieren nicht. Lässt man das Feld leer, so wird die Schrift nicht rot, er kommt aber in den else-Fall rein (getestet per Haltepunkt). Ändere ich aber ein anderes Textfeld, Postausgangserver z.B. so, dass das Label für dieses Textfeld auftaucht oder verschwindet, so reagieren diese beiden .. Habe ich irgendwo einen Fehler, den ich grade übersehe?
Meine 2. Frage:
Diesen ganzen Block kann man doch bestimmt noch zusammenfassen und besser machen oder? Die Logik ist ja immer die gleiche, ich weiß nur nicht, wie man die Labels für die Prüfung übergeben kann. Weiß da jemand was?