Autor Beitrag
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mo 27.02.17 17:49 
Hallo, mir fällt zu folgendem Problem nichts sinnvolles ein:

Der Benutzer kann zu einem Seminar das Datum per DateTimePicker auspicken. Wenn das Datum in der Vergangenheit liegt, so soll ein Hinweis erscheinen wo gefragt wird ob man sich sicher sei.
(Ganz verhindern soll ich es nicht, falls man im nachhinein das Datum doch noch ändern möchte.)

Der Benutzer kann aber auch das Datum in der TextBox ändern, ohne den Picker auszuklappen. Dabei wird beim verlassen der Eintrag gespeichert.

Das Problem ist, wenn der Benutzer ein Datum aus der Vergangenheit auspickt und die Frage mit Ja beantwortet und dann den Picker verlässt, dann wird das onLeave Event ausgelöst, wo die selbe Frage nochmal gestellt wird.

Kann ich das onLeave Event iwie an der Stelle dann verhindern?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
private void dtpSeminarDatum_CloseUp(object sender, EventArgs e)
        {
            try
            {
                if (dtpSeminarDatum.Value < DateTime.Now)
                {
                    MessageBox.Show("Sind Sie sicher, dass Sie ein Termin in der Vergangenheit eintragen möchten?""Hinweis", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    if (DialogResult == DialogResult.Yes)
                    {
                        EditSeminarDatum();
                    }
                    if (DialogResult == DialogResult.No)
                    {
                        return;
                    }
                }
            }
            catch (Exception Ex)
            {
                Error.Show(Ex);
            }
        }


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
private void dtpSeminarDatum_Leave(object sender, EventArgs e)
        {
            try
            {
                if (dtpSeminarDatum.Value < DateTime.Now)
                {
                    MessageBox.Show("Sind Sie sicher, dass Sie ein Termin in der Vergangenheit eintragen möchten?""Hinweis", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    if (DialogResult == DialogResult.Yes)
                    {
                        EditSeminarDatum();
                    }
                }
            }
            catch (Exception Ex)
            {
                Error.Show(Ex);
            }
        }
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.02.17 18:12 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 27.02.17 18:16 
Zitat:
benutz' einfach nur ein Ereignis, nämlich CloseUp.

Du meinst vermutlich nur Leave :gruebel:
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.02.17 18:18 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 27.02.17 18:30 
Ich würde anstatt Leave den Validating Event vorschlagen. Da kann man dann auch gleich verhindern das der User das Control verläßt (EventArgs haben eine Cancel Property) wenn er nein sagt.
So wie du es gerade machst sieht es so aus als würde dann einfach nicht die EditSeminarDatum Methode aufgerufen im DateTimePicker bleibt aber das Datum in der Vergangenheit erhalten. Ungesehen klingt das nach Userverwirrung.
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mo 27.02.17 19:13 
Oh Man danke, das ich selber da nicht drauf gekommen bin, peinlich.

Meine Idee war halt, dass beim picken direkt gespeichert wird (in der Edit-Funktion) und beim verlassen auch, falls der Benutzer es lieber direkt in der Textbox ändern möchte.

Ich probiere eure Lösungsvorschläge aus und falls nichts mehr von mir kommt, hats funktioniert :)