Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

1

07.06.2016, 11:20

Alle Textfelder einer Form prüfen, ob sie ausgefüllt sind

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? :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

07.06.2016, 12:19

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
Das ist aber nichts, was für mich unter "viele Dinge" fällt. Jedenfalls ist eine Farb-Änderung ein echt schlechter Hack. Ganz speziell für Screenreader, die solche Elemente dann natürlich trotzdem vorlesen und super Verwirrung stiften.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

3

07.06.2016, 13:27

Ok, aber einen Hinweis für meine beiden Fragen hast du leider nicht oder ? :P

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

07.06.2016, 14:24

Pack die Labels doch einfach in eine Liste, die du dann durchläufst, um alle zu aktivieren/deaktivieren. Und Farbänderung ist wirklich eine schlechte Idee.

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

5

07.06.2016, 15:33

Danke für den Tipp ^^

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

6

07.06.2016, 15:37

Hat jemand denn noch eine Idee, wieso 2 Labels nicht reagieren? Habe die ja nur in WinForms erstellt und ihnen einen Namen zugewiesen. Im Code werden sie ja auch angesprochen, aber sie verhalten sich nicht richtig.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Garzec« (07.06.2016, 15:51)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

07.06.2016, 21:46

Das Dir kann wohl anhand der paar Zeilen von da oben keiner sagen. Das kann diverse Gründe haben, deren Code wir nicht kennen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

8

08.06.2016, 09:03

Falls es jemanden interessiert, es gibt nen ErrorProvider, der kann die Textfelder sehr gut überprüfen. Damit war mein Problem dann auch schnell gelöst ;)

Werbeanzeige