Usuário com melhor resposta
Delay em C#?

Pergunta
-
Olá, sou novato em C#, e gostaria de entender como usar "delay" nesta linguagem, já entendi o Thread.Sleep, porém preciso de um que não trave o programa.
Estou fazendo um bem básico, e gostaria do seguinte:
Iniciar programa> Cor default>2 segundos depois>Cor Preta>2 segundos depois>Cor azul>2 segundos depois>...
Obrigado!
- Editado ooNCyber sexta-feira, 25 de março de 2016 21:56
Respostas
-
Creio que não,
faça o seguinte. Crie um novo projeto Windows Application em C# com o nome de Cores. Coloque apenas um textbox no form, sem formatar nada.
Depois substitua o código todo do form por este:
using System; using System.Drawing; using System.Windows.Forms; namespace Cores { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Tempo(); } private int dois = 0; private Timer Timer1 = new Timer {Interval = 2000, Enabled = true}; private void Tempo() { Timer1.Tick += (s, e) => { dois++; switch (dois) { case 1: textBox1.BackColor = Color.Black; break; case 2: textBox1.BackColor = Color.Yellow; break; case 3: textBox1.BackColor = Color.Red; break; case 4: textBox1.BackColor = Color.White; break; } }; } } }
Veja se funciona ...
Antero Marques
__________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques domingo, 27 de março de 2016 12:30
- Marcado como Resposta ooNCyber domingo, 27 de março de 2016 12:35
-
Trata-se de uma manipulação de eventos.
Dê uma olhada neste link para entender melhor:
Como realizar e cancelar a assinatura de eventos (Guia de Programação em C#)
Antero Marques
________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques domingo, 27 de março de 2016 13:34
- Marcado como Resposta ooNCyber domingo, 27 de março de 2016 13:59
Todas as Respostas
-
Você pode utilizar o Timer, que é um objeto!
Eu utilizei o seguinte código:
int x = 0; private void timer1_Tick(object sender, EventArgs e) { if (x < 200) { textBox1.BackColor = Color.Black; x++; } else if (x < 400) { textBox1.BackColor = Color.Blue; x++; } else if (x < 600) { textBox1.BackColor = Color.Red; x++; } else if (x < 800) { x = 0; ////Depois de Vermelho ele deve retornar ao preto! } }
-
Você pode utilizar o Timer, que é um objeto!
Eu utilizei o seguinte código:
int x = 0; private void timer1_Tick(object sender, EventArgs e) { if (x < 200) { textBox1.BackColor = Color.Black; x++; } else if (x < 400) { textBox1.BackColor = Color.Blue; x++; } else if (x < 600) { textBox1.BackColor = Color.Red; x++; } else if (x < 800) { x = 0; ////Depois de Vermelho ele deve retornar ao preto! } }
-
Cara, dá uma olhada, ainda usando Timer:
private void Form1_Load(object sender, EventArgs e) { Tempo(); } private int dois = 0; private Timer Timer1 = new Timer {Interval = 2000, Enabled = true}; private void Tempo() { Timer1.Tick += (s, e) => { dois++; switch (dois) { case 1: textBox1.BackColor = Color.Black; break; case 2: textBox1.BackColor = Color.Yellow; break; case 3: textBox1.BackColor = Color.Red; break; case 4: textBox1.BackColor = Color.White; break; } }; }
Att,
Antero Marques
_________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques sábado, 26 de março de 2016 20:06
-
Cara, dá uma olhada, ainda usando Timer:
private void Form1_Load(object sender, EventArgs e) { Tempo(); } private int dois = 0; private Timer Timer1 = new Timer {Interval = 2000, Enabled = true}; private void Tempo() { Timer1.Tick += (s, e) => { dois++; switch (dois) { case 1: textBox1.BackColor = Color.Black; break; case 2: textBox1.BackColor = Color.Yellow; break; case 3: textBox1.BackColor = Color.Red; break; case 4: textBox1.BackColor = Color.White; break; } }; }
Att,
Antero Marques
_________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
-
ooNCyber,
então tem algum problema no seu projeto de teste. O que fiz aqui está funcionando normalmente.
Baixe meu projeto de exemplo e teste:
Antero Marques
__________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques domingo, 27 de março de 2016 04:05
-
-
Creio que não,
faça o seguinte. Crie um novo projeto Windows Application em C# com o nome de Cores. Coloque apenas um textbox no form, sem formatar nada.
Depois substitua o código todo do form por este:
using System; using System.Drawing; using System.Windows.Forms; namespace Cores { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Tempo(); } private int dois = 0; private Timer Timer1 = new Timer {Interval = 2000, Enabled = true}; private void Tempo() { Timer1.Tick += (s, e) => { dois++; switch (dois) { case 1: textBox1.BackColor = Color.Black; break; case 2: textBox1.BackColor = Color.Yellow; break; case 3: textBox1.BackColor = Color.Red; break; case 4: textBox1.BackColor = Color.White; break; } }; } } }
Veja se funciona ...
Antero Marques
__________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques domingo, 27 de março de 2016 12:30
- Marcado como Resposta ooNCyber domingo, 27 de março de 2016 12:35
-
Creio que não,
faça o seguinte. Crie um novo projeto Windows Application em C# com o nome de Cores. Coloque apenas um textbox no form, sem formatar nada.
Depois substitua o código todo do form por este:
using System; using System.Drawing; using System.Windows.Forms; namespace Cores { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Tempo(); } private int dois = 0; private Timer Timer1 = new Timer {Interval = 2000, Enabled = true}; private void Tempo() { Timer1.Tick += (s, e) => { dois++; switch (dois) { case 1: textBox1.BackColor = Color.Black; break; case 2: textBox1.BackColor = Color.Yellow; break; case 3: textBox1.BackColor = Color.Red; break; case 4: textBox1.BackColor = Color.White; break; } }; } } }
Veja se funciona ...
Antero Marques
__________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
Funcionou! Obrigado!
Mais duas coisa, rs, para que serve o comando abaixo? E, tem algum site que explique detalhado sobre esse evento para iniciantes?
Timer1.Tick += (s, e) =>
-
Trata-se de uma manipulação de eventos.
Dê uma olhada neste link para entender melhor:
Como realizar e cancelar a assinatura de eventos (Guia de Programação em C#)
Antero Marques
________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques domingo, 27 de março de 2016 13:34
- Marcado como Resposta ooNCyber domingo, 27 de março de 2016 13:59
-