Timer C#
Abril 30, 2008
Hoje vou mostrar como trabalhar com o componente Timer no C#.
O objetivo desse exemplo é gerar TextBox dinamicamente a cada X segundos. Para isso é usando o componente Timer.
Construa um form como o seguinte:
Você deve construir um form com os componetes exibidos na imagem acima (clique para ampliar a imagem). Os componentes usados nesse form são GroupBox, Label, NumericUpDown e Button. Os nomes em vermelho são a propriedade name que deve ser definida para cada componente.
Quando você clica em cima do componente Timer, ele não aparece dentro do form, fica na parte inferior. Esse tipo de componente não é visível.
A ideia desse form é você informar quantos TextBox deve ser criado e a quantos segundos. Quando você clicar no botão Iniciar começa a criação das TextBox dinamicamente. Quando você clica no botão Parar o Timer será parado e não será mais gerado TextBox. As TextBoxs são criadas dentro do elemento groupBoxTextBox, desta forma implementei o botão limpar para zerar o conteúdo do groupBoxTextBox.
Vamos criar o código para tudo funcionar e depois vemos como a sintaxe funciona.
Dê dois clique no botão Iniciar e digite o seguinte código:
private void buttonIniciar_Click(object sender, EventArgs e)
{
int segundos = System.Convert.ToInt16(numericUpDownSegundos.Value);
timerTextBox.Stop();
timerTextBox.Interval = (int)segundos * 1000;
timerTextBox.Tick += new EventHandler(timerEvent);
timerTextBox.Start();
}
Agora dê dois cliques em cima do botão Parar e digite o código abaixo:
private void buttonParar_Click(object sender, EventArgs e)
{
timerTextBox.Stop();
}
Dê dois clique no botão limpar e adicione o código abaixo:
private void buttonLimpar_Click(object sender, EventArgs e)
{
groupBoxTextBox.Controls.Clear();
}
Crie um novo método chamado timerEvent logo abaixo do método buttonLimpar_Click, o método timerEvent deve ficar da seguinte forma:
private void timerEvent(Object sender, EventArgs e)
{
int criar = System.Convert.ToInt16(numericUpDownTextBox.Value);
for (int i = 0; i < criar; i++)
{
TextBox minhaTextBox = new TextBox();
minhaTextBox.Height = 20;
minhaTextBox.Width = 250;
minhaTextBox.Location = new Point(10, 15 + (minhaTextBox.Height * groupBoxTextBox.Controls.Count));
minhaTextBox.Text = "TextBox #" + groupBoxTextBox.Controls.Count;
groupBoxTextBox.Controls.Add(minhaTextBox);
}
}
Pronto! Agora só pressionar F5 e ver a aplicação funcionado.
Vamos enteder como tudo funciona.
No botão Iniciar temos os seguintes códigos:
int segundos = System.Convert.ToInt16(numericUpDownSegundos.Value);
timerTextBox.Stop();
timerTextBox.Interval = (int)segundos * 1000;
timerTextBox.Tick += new EventHandler(timerEvent);
timerTextBox.Start();
Na ordem, o método System.ConvertToInt16 converte o valor do campo número de segundos para inteiro. Depois executamos timerTextBox.Stop() isso faz que o timerTextBox sempre pare, com o objetivo de parar uma execução atual do Timer. O método Interval define que o Timer deve executar suas funções em tempos em tempos, esse valor é dado em milesegundos. O método Tick chamada uma função a cada intervalo definido, nesse exemplo é chamado o método timerEvent e por fim timerTextBox.Start() coloca o timer para funcionar.
O código do método timerEvent:
int criar = System.Convert.ToInt16(numericUpDownTextBox.Value);
for (int i = 0; i < criar; i++)
{
TextBox minhaTextBox = new TextBox();
minhaTextBox.Height = 20;
minhaTextBox.Width = 250;
minhaTextBox.Location = new Point(10, 15 + (minhaTextBox.Height * groupBoxTextBox.Controls.Count));
minhaTextBox.Text = "TextBox #" + groupBoxTextBox.Controls.Count;
groupBoxTextBox.Controls.Add(minhaTextBox);
}
Esse cara obtém quantos elementos deve ser criados no intervalo de segundos definido, nessa parte criamos um TextBox dinamico e colocamos esse elemento dentro do groupBoxTextBox execuntado a sintaxe:
groupBoxTextBox.Controls.Add(minhaTextBox);
Nesse método é usado:
groupBoxTextBox.Controls.Count
Essa sintaxe retorna apenas a quantidade de elementos que existe atualmente dentro do groupBoxTextBox, é usado para definir a possíção de exibição das TextBoxs criadas.
Entendendo o código dos botões Parar e Limpar:
private void buttonParar_Click(object sender, EventArgs e)
{
timerTextBox.Stop();
}
private void buttonLimpar_Click(object sender, EventArgs e)
{
groupBoxTextBox.Controls.Clear();
}
A sintaxe timerTextBox.Stop(); para o Timer, assim o Timer não executa mais. A sintaxe groupBoxTextBox.Controls.Clear(); remove tudo que existe dentro do groupBoxTextBox.

Maio 3, 2008 at 6:02 am
Salve Patrick,
Respondendo ao seu comentário sobre o Firefox 3 no Ubuntu 8.04, realmente foi prematura a disponibilidade por tratar-se de um software ainda não final.
Conduto, o aspecto do novo Firefox integrado ao tema do ubuntu é fantástico, agora ele me parece realmente uma extensão do Gnome!
No uso diário encontrei alguns problemas com extensões, mas nada grave!