Mit Urteil vom 12. Mai 1998 - 312 O 85/98 - "Haftung für Links" hat das Landgericht (LG) in Hamburg entschieden, dass man durch die Anbringung eines Links die Inhalte der gelinkten Seite ggf. mit zu verantworten hat. Dies kann nur verhindert werden, indem man sich ausdrücklich von diesen Inhalten distanziert. Hiermit weisen wir darauf hin, dass wir fremde Links nur zur Information und zur eigenverantwortlichen Benutzung anbieten.
Wir distanzieren uns ausdrücklich von allen Inhalten aller Links auf unseren Seiten und in unseren Foren. Sollten wir auf unseren Seiten in irgendeiner Weise auf Seiten mit verbotenem oder anstössigem Inhalt hinweisen, bitten wir Sie, uns darauf aufmerksam zu machen, damit wir diese Links entfernen können.
In einer Windows Anwendung wird in einer Form unter anderem ein (eigentlich sind es zwei, aber dazu später mehr) DateTimePicker verwendet um Termine einzugeben.
Da der DateTimePicker nicht gerade komfortabel ist um sowohl Datum als auch Uhrzeiten einzugeben, wird ein DateTimePicker in der Option DropDownCalender (das ist deaktivierte Eigenschaft ShowUpDown) eingesetzt um das Datum elegant aus dem DropDownCalender auszuwählen und ein zweites DateTimePicker Control mit der gesetzen Eigenschaft ShowUpDown und dem entsprechenden Custom Format HH:mm um nur die Uhrzeit mit den Pfeilen hoch und runter einstellen zu können.
Nun ist es aber so, dass man im DateTimePicker keinen Inkrement Wert eingeben kann, um den die Minuten erhöht bzw vermindert werden wenn man einmal auf den Pfeil hoch oder runter klickt. Somit wird jeweils um eine Minute hoch oder runter gezählt.
In meinem Fall nun wollte der Kunde aber das Termine nicht Minutengenau sondern immer auf 15 Minuten (Viertelstunde) Basis, also 00, 15, 30 und 45 erfasst werden können.
Da ich nicht gleich ein eigenen Control entwickeln wollte, habe ich einfach eine kleine Routine in den Change Event des DateTimePicker eingebaut.
Nachfolgend der Code Ich denke die Routine ist selbsterklärend
private void startzeitTimePicker_ValueChanged(object sender, EventArgs e) { DateTimePicker dtp = (DateTimePicker)sender; // Wenn nicht Minute nicht 0,15,45 oder 60 dann müssen wir was tun if ((((dtp.Value.Minute != 0) && (dtp.Value.Minute != 15)) && (dtp.Value.Minute != 30)) && (dtp.Value.Minute != 45)) { // Auch noch einfach, nur 14 Minuten drauf und gut ist if ((dtp.Value.Minute == 1) || (dtp.Value.Minute == 16) || (dtp.Value.Minute == 31) || (dtp.Value.Minute == 46)) { dtp.Value = dtp.Value.AddMinutes(14); } else { // Zeit wurde heruntergezählt. if ((dtp.Value.Minute == 14) || (dtp.Value.Minute == 29) || (dtp.Value.Minute == 44) || (dtp.Value.Minute == 59)) { int x = 14; // Deshalb auf jeden Fall mal 14 Minuten abziehen, if (dtp.Value.Minute == 59) // und wenn die Minuten auf 59 stehen, dann muss noch eine Stunde (60 minuten) mehr abgezogen werden { x += 60; } dtp.Value = dtp.Value.AddMinutes(-x); } else // Wert muss manuell eingegeben worden sein, dann runden wir auf die nächst höhere Viertelstunde { for (int i = 0; i < 15; i++) { int x = dtp.Value.Minute + i; if ((x == 15) || (x == 30) || (x == 45) || (x == 60)) { dtp.Value = dtp.Value.AddMinutes(i); break; } } } } } }
Hoffe das hilft dem einen oder anderen (Oder mir selbst beim nächsten mal wenn ich vor dem gleichen Problem stehen )
Remember Me
a@href@title, strike