Cuenta Atras

28/03/2006 - 21:13 por asd | Informe spam
Hola, quiero hacer una cuenta atras, q cuando llegue a 0 muestre un aviso.

private DateTime tiempo;

private int wtf = 0;

private void timer1_Tick(object sender, EventArgs e)

{

wtf++;

tiempo = tiempo.AddSeconds(1);

label1.Text = tiempo.Minute + ":" + tiempo.Second;

if (wtf == (120)) MessageBox.Show("Aviso");

}



Ese es un cronometro normal q hice, como se haria al reves.

Preguntas similare

Leer las respuestas

#6 Octavio Hernandez
30/03/2006 - 10:48 | Informe spam
Genial, Miguel Angel!

Cierto, a mí ni me pasó por la cabeza que a AddSeconds se le pudiera pasar
un entero negativo.
Además de lo que tú dices, la otra justificación que se me ocurre (siempre
hay que tratar de buscar alguna :-) es que sabía que existía una función
Subtract(), porque una vez la vi y se me quedó en la mente que es
'Subtract', sin 's' intermedia (en vez de 'Substract').

Salu2 - Octavio



"Miguel Angel Campos" <SPAMmacampos ARRUBA .idesarrollaSPAM.com> escribió en
el mensaje news:%
Es curioso como la elección del nombre de un función puede condicionar su
futuro uso.
Si vemos que una función se llama AddSeconds, automaticamente se piensa
que sirve para sumar números, y al pensar en sumar números solo pensamos
en sumar números positivos, nunca números negativos.

Pero a lo que vamos, tambien es posible cambiar el 1 por un -1, y
funcionará igualmente bien.
tiempo.AddSeconds(-1);

Un Saludo,

Miguel Angel Campos
MCSD.NET

"Octavio Hernandez" escribió en el mensaje
news:
Hola,

En principio puedes hacer lo mismo, pero inicializando wtf en 120 y
restando 1 en cada iteración.
En lugar de tiempo.AddSeconds(1), para restar un segundo utiliza
tiempo.Subtract(new TimeSpan(0, 0, 1));

Slds - Octavio



"asd" escribió en el mensaje
news:
Hola, quiero hacer una cuenta atras, q cuando llegue a 0 muestre un
aviso.

private DateTime tiempo;

private int wtf = 0;

private void timer1_Tick(object sender, EventArgs e)

{

wtf++;

tiempo = tiempo.AddSeconds(1);

label1.Text = tiempo.Minute + ":" + tiempo.Second;

if (wtf == (120)) MessageBox.Show("Aviso");

}



Ese es un cronometro normal q hice, como se haria al reves.










Respuesta Responder a este mensaje
#7 Miguel Angel Campos
30/03/2006 - 17:48 | Informe spam
Yo creo que eso nos ha pasado a todos.
Si vemos un método que se llama Add, y queremos resta, vamos a buscar un
método que se llame Subtract, y si lo encontramos como en el caso de
DateTime, seguro que pensamos, con lo facil que es añadir segundo, y lo
dificil que nos ponen restar los segundos.

Lo bueno es que una vez que te pasa, ya no lo olvidas.

Un Saludo,

Miguel Angel Campos
MCSD.NET

"Octavio Hernandez" escribió en el mensaje
news:OlM4%

Genial, Miguel Angel!

Cierto, a mí ni me pasó por la cabeza que a AddSeconds se le pudiera pasar
un entero negativo.
Además de lo que tú dices, la otra justificación que se me ocurre (siempre
hay que tratar de buscar alguna :-) es que sabía que existía una función
Subtract(), porque una vez la vi y se me quedó en la mente que es
'Subtract', sin 's' intermedia (en vez de 'Substract').

Salu2 - Octavio



"Miguel Angel Campos" <SPAMmacampos ARRUBA .idesarrollaSPAM.com> escribió
en el mensaje news:%
Es curioso como la elección del nombre de un función puede condicionar su
futuro uso.
Si vemos que una función se llama AddSeconds, automaticamente se piensa
que sirve para sumar números, y al pensar en sumar números solo pensamos
en sumar números positivos, nunca números negativos.

Pero a lo que vamos, tambien es posible cambiar el 1 por un -1, y
funcionará igualmente bien.
tiempo.AddSeconds(-1);

Un Saludo,

Miguel Angel Campos
MCSD.NET

"Octavio Hernandez" escribió en el
mensaje news:
Hola,

En principio puedes hacer lo mismo, pero inicializando wtf en 120 y
restando 1 en cada iteración.
En lugar de tiempo.AddSeconds(1), para restar un segundo utiliza
tiempo.Subtract(new TimeSpan(0, 0, 1));

Slds - Octavio



"asd" escribió en el mensaje
news:
Hola, quiero hacer una cuenta atras, q cuando llegue a 0 muestre un
aviso.

private DateTime tiempo;

private int wtf = 0;

private void timer1_Tick(object sender, EventArgs e)

{

wtf++;

tiempo = tiempo.AddSeconds(1);

label1.Text = tiempo.Minute + ":" + tiempo.Second;

if (wtf == (120)) MessageBox.Show("Aviso");

}



Ese es un cronometro normal q hice, como se haria al reves.














Respuesta Responder a este mensaje
#8 Jose Luis Manners
30/03/2006 - 23:13 | Informe spam
Una pequeña recomendación es que uses la función AddSeconds() que te
recomendaron Miguel Angel y Octavio para que restes los segundos sin tener
que crear un nuevo objeto TimeSpan cada vez que el evento se dispare. Otra
cosa, no sé si lo probaste pero tu problema original era hacer una cuenta
regresiva a partir de 120 minutos, la función AddMinutes() permite este tipo
de valor y automaticamente hace el calculo para asignar el valor apropiado
al campo de hora: 2:00:00. Si vas a mostrar la hora te sugiero quitarle el
primer zero en la linea donde dice "tiempo.Minute.ToString("00#") " ya que
nunca tendras un valor mayor de 2 digitos. Mira este código:

private DateTime tiempo;

private void Form3_Load(object sender, System.EventArgs e)
{
tiempo = tiempo.AddMinutes(120);
timer1.Start();
}

private void timer1_Tick(object sender, System.EventArgs e)
{
tiempo = tiempo.AddSeconds(-1);
label1.Text = tiempo.Hour.ToString("0#") + ":" +
tiempo.Minute.ToString("0#") + ":" + tiempo.Second.ToString("0#");

if (tiempo.Hour == 0 && tiempo.Minute == 0 && tiempo.Second == 0)
{
timer1.Stop();
MessageBox.Show("Aviso");
}
}

Espero te sirva.

Coopera con el foro. Dinos si te sirvió la respuesta aquí planteada.

Saludos,

Jose Luis Manners
MCP, MCAD.NET, DCE5
http://www.josemanners.com/

"Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as
possible, you are, by definition, not smart enough to debug it."
-Brian W. Kernighan

"asd" wrote in message
news:
Gracias esto ToString("0#") me sera de ayuda no sabia como poner ceros
cuando un segundo o minuto fuera una cifra.

La cuenta atras la e echo usando el Subtract.
private DateTime tiempo;

private void timer1_Tick(object sender, EventArgs e)

{

tiempo = tiempo.Subtract(new TimeSpan(0, 0, 1));

label1.Text = tiempo.Minute.ToString("00#") + ":" +
tiempo.Second.ToString("0#");

if (tiempo.Minute == 0 && tiempo.Second == 0) MessageBox.Show("Aviso");

}

private void Form1_Load(object sender, EventArgs e)

{

tiempo = tiempo.AddMinutes(3);

}


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida