344 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
344 messaggi dal 08 dicembre 2006
nessun aiuto per favore?
10.078 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

Alla Microsoft House di Milano, il 27-28 giugno si parla di accessibilità: eventi, workshop e un hackathon di 2 giorni!
Info e iscrizioni su https://aka.ms/mscomm
344 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.
344 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.