locked
cronometro RRS feed

  • Domanda

  • salve a tutti, sono un giovane sviluppatore e vorrei chidervi un piccolo aiuto:

    ho in mente di creare una applicazione(la mia sec. app) in cui c'è un cronometro, ma mi servono solo i secondi ( qui nn so come fare) e quando stoppo il crnometro i secondi contati vanno moltiplicati ad un numero.

    mi potete dare una mano oppure un link con la spiegazione?

    grazie in anticipo e scusate se chiedo troppo

     

    martedì 6 settembre 2011 20:21

Risposte

  • no no figurati... sono qui per aiutare! ecco a te il codice di esempio che ti ho preparato al volo:

     

    lato XAML

     <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="89" />
                            <RowDefinition Height="107" />
                            <RowDefinition Height="411" />
                        </Grid.RowDefinitions>
                        <Button x:Name="btnstart" Content="Start" Height="98" Margin="16,8,265,1" Width="175" Grid.Row="1" Click="btnstart_Click"></Button>
                    <Button Click="btnStop_Click" x:Name="btnStop" Content="Stop" Margin="244,17,38,4" Height="86" Width="174" Grid.Row="1"></Button>
                        <TextBlock x:Name="txtTimer" Margin="187,35,157,343" Grid.Row="2" Width="112" Height="33">0</TextBlock>
                        <TextBlock Height="33" Margin="103,34,274,344" Name="textBlock1" Width="79" Grid.Row="2">Secondi:</TextBlock>
                    </Grid>
    


    Lato Code-behind(C#):

     public DispatcherTimer timer = new DispatcherTimer();
            int sec = 0;
    
    
            public MainPage()
            {
                InitializeComponent();
                timer.Interval = new TimeSpan(0, 0, 1);
                timer.Tick += new EventHandler(timer_Tick);
    
            }
    
    
            void timer_Tick(object sender, EventArgs e)
            {
    
                sec += 1;
                txtTimer.Text  = sec.ToString(); 
            }
    
       private void btnstart_Click(object sender, RoutedEventArgs e)
            {
                timer.Start();
            }
    
            private void btnStop_Click(object sender, RoutedEventArgs e)
            {
            
                // QUI GESTISCI LA MOLTIPLICAZIONE 
                int nuovonumero = sec * 8; //8 è il numero a caso che magari lo generi random
                MessageBox.Show(nuovonumero.ToString());
                //RESETTI I SECONDI A 0
                sec = 0;
                timer.Stop();
            }
    


    IMPORTANTE: Aggiungi using System.Windows.Threading; all'inizio della pagina!

    Io l'ho provato e funziona alla grande... non guardare il lato estetico perchè l'ho fatto al volo ora! :D

    Fammi sapere

     


    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    martedì 6 settembre 2011 21:34

Tutte le risposte

  • ciao,

     

    devi utilizzare l'oggetto dispatcher timer  e tramite l'evento tick puoi contare i vari secondi ed eseguire delle operazioni. Guarda questo esempio che ti spiega come utilizzarlo! http://blogs.msdn.com/b/rickyt/archive/2010/08/13/windows-phone-applications-timing-and-threading.aspx

    Fammi sapere se riesci!


    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    martedì 6 settembre 2011 20:52
  • Grazie per la risposta in cosi in poco tempo:)

    ho letto il link e devo dire la verita: ho capito poco.

    mi potresti dare una mano te?

     

    ti spiego nel dettaglio cosa vorrei fare.

    vorrei un cronometro vero e proprio però solo con i secondi che scorrono sullo schermo.

    poi quando l'utente clicca sul pulsante stop per fermare il cronometro, i secondi calcolati verranno multiplicati per un numero (non modificabile) e il risultato voglio che venga fuori in un messagebox.

    se hai qualche idea o un altro link grazie mille.

    scusa se ti chiedo troppo, ma sono ancora un principiante nello sviluppo (ho 16 anni e lo faccio come hobby :) )

     

    martedì 6 settembre 2011 21:11
  • no no figurati... sono qui per aiutare! ecco a te il codice di esempio che ti ho preparato al volo:

     

    lato XAML

     <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="89" />
                            <RowDefinition Height="107" />
                            <RowDefinition Height="411" />
                        </Grid.RowDefinitions>
                        <Button x:Name="btnstart" Content="Start" Height="98" Margin="16,8,265,1" Width="175" Grid.Row="1" Click="btnstart_Click"></Button>
                    <Button Click="btnStop_Click" x:Name="btnStop" Content="Stop" Margin="244,17,38,4" Height="86" Width="174" Grid.Row="1"></Button>
                        <TextBlock x:Name="txtTimer" Margin="187,35,157,343" Grid.Row="2" Width="112" Height="33">0</TextBlock>
                        <TextBlock Height="33" Margin="103,34,274,344" Name="textBlock1" Width="79" Grid.Row="2">Secondi:</TextBlock>
                    </Grid>
    


    Lato Code-behind(C#):

     public DispatcherTimer timer = new DispatcherTimer();
            int sec = 0;
    
    
            public MainPage()
            {
                InitializeComponent();
                timer.Interval = new TimeSpan(0, 0, 1);
                timer.Tick += new EventHandler(timer_Tick);
    
            }
    
    
            void timer_Tick(object sender, EventArgs e)
            {
    
                sec += 1;
                txtTimer.Text  = sec.ToString(); 
            }
    
       private void btnstart_Click(object sender, RoutedEventArgs e)
            {
                timer.Start();
            }
    
            private void btnStop_Click(object sender, RoutedEventArgs e)
            {
            
                // QUI GESTISCI LA MOLTIPLICAZIONE 
                int nuovonumero = sec * 8; //8 è il numero a caso che magari lo generi random
                MessageBox.Show(nuovonumero.ToString());
                //RESETTI I SECONDI A 0
                sec = 0;
                timer.Stop();
            }
    


    IMPORTANTE: Aggiungi using System.Windows.Threading; all'inizio della pagina!

    Io l'ho provato e funziona alla grande... non guardare il lato estetico perchè l'ho fatto al volo ora! :D

    Fammi sapere

     


    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    martedì 6 settembre 2011 21:34
  • grazie adesso o doma lo provo

    ti faccio sapere al piu presto

     

    martedì 6 settembre 2011 21:40
  • grazie mille!!!

    funziona tutto bene, se ho problemi ti farò sapere

    mercoledì 7 settembre 2011 08:55
  • prego figurati! ricordati di segnare come risposta valida il mio post così aiutiamo quelli che leggeranno questo post in futuro!

    A presto

     


    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    mercoledì 7 settembre 2011 08:58
  • ciao, ma se nel cronometro voglio mettere anche i millesimi di secondo cm devo fare??
    giovedì 8 settembre 2011 17:36
  • scusa ho sbagliato i centesimi di secondo.(come devo fare?)

     

    grazie in anticipo

    venerdì 9 settembre 2011 20:50
  • Ciao, scusa il ritardo!

    devi "giocare" con il costruttore del timespan!

    ecco a te il codice x avere i millisecondi

    timer.Interval = new TimeSpan(0, 0, 0, 0, 1);

    sostituisci questo al codice precedente, se hai bisogno dei centesimi allora devi fare così

    timer.Interval = new TimeSpan(0, 0, 0, 0, 10);

    cmq modifica il thread da discussione generale a domanda così aiuti gli altri! ;)

    Ciao


    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    sabato 10 settembre 2011 16:02
  • non ti preoccupare, però non riesco a farlo.

    ho messo un altro txtblock per i centesimi di secondo ma non funziona rimane a 0 e invece il txtblock dei secondi diventa quello dei centesimi.

    e poi è giudto che i centesimi vanno avanti senza a ritornare a 0???

     

    grazie per l'aiuto

     

    sabato 10 settembre 2011 17:56
  • c'è lo fatta però mi manca solo una cosa che i centesimi di secondo vadino a 0 da soli e non continuano all'infinito.come faccio??
    sabato 10 settembre 2011 20:08
  • ciao, questa cosa è da gestire nell'evento tick del timer! devi capire che in automatico lui ti genera millesimi, centesimi, secondi, minuti ecc... sei tu che devi gestire la cosa... l'oggetto timer esegue un evento ogni volta che scade il tempo che hai impostato nella proprietà inverval, quindi se imposti un secondo ogni secondo viene eseguito l'evento tick... poi sta a te gestire la cosa!
    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    sabato 10 settembre 2011 20:37
  • scusami se sono rompi ***** ma non ho capito molto bene l'ultima parte.

    me lo potrsti rispiegare con degli esempi???

     

    grazie e scusa ancora se ti rompo

    domenica 11 settembre 2011 11:50
  • Ciao, nessun problema figurati :)

    Allora, Questo oggetto esegue ogni tot un evento! questo evento è chiamato Tick! tu devi gestire cosa deve accadere quando questo evento viene richiamato dall'oggetto! quindi il Dispatcher Timer non è un orologio bello ma serve per eseguire del codice ogni tot!

    Per capire meglio ti consiglio di cercare su google o di vedere questa giuda su msdn http://msdn.microsoft.com/it-it/library/system.windows.threading.dispatchertimer.aspx

     

     

     

     


    Carmine Punella Blog: http://dotnetlombardia.org/b/remixx/default.aspx
    domenica 11 settembre 2011 13:38
  • grazie ancora ma non ci riesco, metterò solo i secondi.

    grazie di tutto

     

    domenica 11 settembre 2011 16:31