DateTimePicker

di il
9 risposte

DateTimePicker

Buongiorno a tutti!
io ho un DateTimePicker con il format settato su time, fino a qui tutto bene, il mio problema e che dovrei creare i tasti up and down che servono per incrementare o decrementare le ore/minuti/secondi, so che ci sono gia, ma dovrei crearne degli altri per personalizzarli.
Pensavo bastasse selezionare le ore/minuti oppure secondi, e dopo fare un if e verificare quale è stato selezionato, e incrementarlo di 1, ma non ce un select oppure un item select

9 Risposte

  • Re: DateTimePicker

    ors ha scritto:


    il mio problema e che dovrei creare i tasti up and down che servono per incrementare o decrementare le ore/minuti/secondi
    Non ho ben capito qual è il tuo problema specifico, quindi andiamo per punti...

    I tasti di up/down vuoi sostituirli al controllo DateTimePicker, quindi averne tre ciascuno per la propria parte dell'orario (ore, minuti, secondi), con relativa casella di testo associata, oppure vuoi usare dei tasti up/down che vadano a variare l'orario mostrato nel DateTimePicker?

    Nel primo caso, credo sia abbastanza facile disporre dei controlli e impostare i limiti minimi/massimi dei valori in base alla parte dell'orario che devono modificare, andando poi a creare il valore DateTime quando serve (con new DateTime()).

    Nel secondo caso, ti basta gestire l'evento di clic su ciascun up/down, andando a prendere l'orario dal controllo DateTimePicker e incrementando/decrementando la parte che ti interessa, usando i metodi del tipo DateTime (es. AddHours(), AddMinutes(), ecc.) per ottenere il valore aggiornato, riassegnandolo poi al controllo DateTimePicker.

    Non so se la spiegazione teorica è chiara, ma probabilmente è più facile implementare la soluzione che raccontarla.
  • Re: DateTimePicker

    Ciao,
    Grazie mille della risposta, la soluzione che volevo intraprendere era la seconda, io ho creato altri due tasti, che andassero a simulare i tasti up/down gia presenti nel datetimepicker, logicamente so come fare, ma ho difficoltà a creare la procedura giusta in vb.net.
    In poche parole non so in questo linguaggio, nell'evento click click del tasto creato , dirgli fai la stessa cosa di down/up, oppure sempre nell' evento click del tasto che ho creato, incrementa il valore che ho selezionato hh/mm/ss
  • Re: DateTimePicker

    Io volevo fare una cosa del genere, ma non so se esiste quest evento:

    Private Sub Up_Click(sender As Object, e As EventArgs) Handles Button1.Click

    if datetimepicker.selected.hours=true then
    datetimepicker.AddHours(1)
    elseif datetimepicker.selected.minutes=true then
    datetimepicker.AddMinutes(1)
    elseif datetimepicker.selected.second=true then
    datetimepicker.AddSecond(1)
    end if

    End Sub
  • Re: DateTimePicker

    ors ha scritto:


    Io volevo fare una cosa del genere, ma non so se esiste quest evento:

    Private Sub Up_Click(sender As Object, e As EventArgs) Handles Button1.Click

    if datetimepicker.selected.hours=true then
    datetimepicker.AddHours(1)
    elseif datetimepicker.selected.minutes=true then
    datetimepicker.AddMinutes(1)
    elseif datetimepicker.selected.second=true then
    datetimepicker.AddSecond(1)
    end if

    End Sub
    Concettualmente direi che siamo vicini, ma perché hai bisogno di fare una verifica con il costrutto if?

    Ti basta fare una cosa del genere: [CODE]dateTimePicker1.Value = dateTimePicker1.Value.AddHours(1) In pratica, a ogni clic sul controllo UpDown, prelevi il valore data/ora attuale dal controllo (proprietà Value), invochi il metodo AddHours, AddMinutes, ecc. sul valore e lo imposti nuovamente sulla proprietà Value del controllo.

    Per incrementare la parte di ora che ti interessa con i vari metodi AddXXX, usi un valore positivo (1), mentre usi un valore negativo (-1) per decrementare.

    Mi sembra relativamente semplice.
    Fai una prova tu stesso.
  • Re: DateTimePicker

    Si, questa e stata la mia prima soluzione, ma ciò mi costringe a creare 3 pulsanti, uno che incrementa ore, un altro minuti, e un altro ancora i secondi.
    mentre i tasti UP/Down presenti gia nel controllo datetimepicker incrementano il valore selezionato, e io devo fare lo stesso, devo creare due pulsanti che incrementano solo il valore selezionato, per questo ho messo l'if, per verificare quale valore è stato selezionato.
    Ho necessita di creare altri 2 pulsanti identici a quelli gia presenti, semplicemente perche risultano troppo piccoli per me, e vorrei crearne altri 2 ma piu grandi. ps. Il format del datetimepicker è: Time
    Logicamente so come fare, ma non so come applicare cio con visual studio
  • Re: DateTimePicker

    ors ha scritto:


    Ho necessita di creare altri 2 pulsanti identici a quelli gia presenti, semplicemente perche risultano troppo piccoli per me, e vorrei crearne altri 2 ma piu grandi.
    La soluzione a questo punto è presto detta: non usare il controllo DateTimePicker.

    Non vedo perché ci si dovrebbe lambiccare nel tentare di piegare un controllo a una esigenza diversa rispetto a quella per cui è stato progettato, soprattutto se fa la stessa cosa che tu devi reimplementare, quindi in pratica le funzionalità esistenti del DTP devi "buttarle via".

    Metti delle normalissime TextBox per le parti di ore/minuti/ecc. e altrettanti controlli UpDown e scrivi il codice per gestirle manualmente, lasciando perdere il DTP che in questo caso non ti offre nulla che tu possa utilizzare.
  • Re: DateTimePicker

    Misà che hai ragione, ho la capacita di complicarmi la vita, e che spesso mi intestardisco e non posso pensare che non ci sia un evento in un button normale che simuli le stesse cosa che fa UP/Down del datetime picker.
    Comunque penso faro cosi, creo la textbox
  • Re: DateTimePicker

    ors ha scritto:


    Misà che hai ragione, ho la capacita di complicarmi la vita, e che spesso mi intestardisco
    No, secondo me la pensata iniziale di sfruttare il DTP poteva starci, dovendo fare (sempre se ho capito bene) una evoluzione allo stesso.

    A conti fatti però, vista che alla fine si riutilizza poco o nulla, tanto conviene implementare qualcosa di nuovo e ad hoc.

    ors ha scritto:


    non posso pensare che non ci sia un evento in un button normale che simuli le stesse cosa che fa UP/Down del datetime picker.
    Usando un normale Button, l'unico evento a cui si può fare riferimento è Click, per ovvietà di cose: si tratta di un pulsante generico, quindi non aggiunge nulla e lascia allo sviluppatore il compito di scrivere il codice necessario in risposta all'evento.

    Ma tu non devi usare un pulsante semplice, bensì un NumericUpDown: ne posizioni un paio e attribuisci loro i valori minimi (0, zero) e massimi (23 per le ore, 59 per i minuti) e gestisci l'evento scatenato quando si cambia il valore di una o dell'altra per andare a costruire un DateTime prendendo ora e minuti dal valore corrente del controllo NUD.

    Se vuoi qualche esempio, puoi leggere questo articolo.

    Se lo scenario è ancora diverso o i dubbi riguardano altro, allora credo si debba chiarire meglio lo scenario, e magari far vedere un po' di codice con le spiegazioni.

    Ciao!
  • Re: DateTimePicker

    Grazie mille Alka alla fine ho creato le textbox e ho fatto prima xD
Devi accedere o registrarti per scrivere nel forum
9 risposte