345 messaggi dal 08 dicembre 2006
Buonasera,
in un'applicazione winform c# .NET 4.0, ho un controllo DateTimePicker impostato in modo che venga visualizzata solo l'ora in formato HH:mm, e con sulla destra i controlli UpDown.
Vorrei restringere le ore visualizzate in base ai turni di lavoro, ovvero, per 1° turno dalle 6 alle 14, per il 2° turno, dalle 14 alle 22, e per il 3° dalle 22 alle 6 del giorno successivo (ovviamente):
Per il 1° e 2° turno non ho problemi, ma per il terzo turno non ci sono proprio.
Il codice che uso è questo:
                oraDa.MinDate = DateTime.Parse("14:00");
                oraDa.MaxDate = DateTime.Parse("22:00");

Ho provato questo per il terzo turno:
oraDa.MinDate = DateTime.Parse("22:00");
oraDa.MaxDate = DateTime.Parse("6:00").AddDays(1);


ma posso selezionare solo le ore 22 o 23, non mi fa andare oltre. Dove sbaglio?

Grazie anticipo!

Gianni
345 messaggi dal 08 dicembre 2006
nessun aiuto per favore?
10.161 messaggi dal 09 febbraio 2002
Contributi
Ciao,
il problema è che i controlli UpDown agiscono solo sulla porzione di data che hai selezionato col mouse. Infatti, se tu clicchi l'ora, i controlli aumenteranno o diminuiranno l'ora lasciando inalterato il resto.

Dato che la data minima è oggi alle 22, quando clicchi UP imposterai la data ad oggi alle 23. Se clicchi UP di nuovo, la data andrebbe a finire a oggi alla mezzanotte ma questo non ti è consentito perché la data minima era, appunto, oggi alle 22.

Forse dovresti impostare una MinDate e una MaxDate più ampie. Poi gestisci l'evento ValueChanged e verifichi se rientra nel tuo intervallo. Se non rientra, reimposti il valore di fatto invalidando la selezione dell'utente.

ciao,
Moreno

Enjoy learning and just keep making
345 messaggi dal 08 dicembre 2006
Ciao Moreno,
procederò in questa direzione.

Grazie!
2 messaggi dal 01 febbraio 2017
Il mio consiglio è di gestire manualmente il pulsante UP, in modo tale che quando arriva alle 23:59:00 della data impostata, provveda automaticamente a passare al giorno successivo, impostando nuovi valori per il range di ore (dalle 00:00:00 alle 06:00:00) e sommando di 1 giorno la data.
345 messaggi dal 08 dicembre 2006
Grazie per la tua soluzione!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.