Timer C#

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:

1
2
3
4
5
6
7
8
9
 
        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:

1
2
3
4
5
 
        private void buttonParar_Click(object sender, EventArgs e)
        {
            timerTextBox.Stop();
        }

Dê dois clique no botão limpar e adicione o código abaixo:

1
2
3
4
5
 
        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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
        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:

1
2
3
4
5
6
 
            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:

1
2
3
4
5
6
7
8
9
10
11
 
            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:

1
2
 
groupBoxTextBox.Controls.Add(minhaTextBox);

Nesse método é usado:

1
2
 
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:

1
2
3
4
5
6
7
8
9
10
 
        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.

Posted in C# at abril 30th, 2008. No Comments.

Método IndexOfAny em C#

O método IndexOfAny busca o índice da primeira ocorrência de um caracter ou muitos em uma string.

Vamos ver como isso funciona, construa o form abaixo com somente um TextBox.

Dê duplo clique sobre o TextBox e digite o código abaixo no evento TextChanged:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            char [] anyOf = {'@', '.', '!'};
            if (textBox1.Text.IndexOfAny(anyOf) == -1)
            {
                textBox1.BackColor = Color.Red;
            }
            else
            {
                textBox1.BackColor = Color.Green;
            }
        }

Rode a aplicação com F5, digite qualquer texto e depois insira os caracteres “@”, “.” ou “!”. A caixa de texto fica com o fundo vermelho quando não existe esses caracteres e fundo verde quando você digita os caracteres mencionados.

Vamos entender como o código funciona:

1
2
 
char [] anyOf = {'@', '.', '!'};

O código acima cria um array de caracteres com os itens que desejamos buscar na string do TextBox.

O código:

1
2
3
4
5
6
7
8
9
 
            if (textBox1.Text.IndexOfAny(anyOf) == -1)
            {
                textBox1.BackColor = Color.Red;
            }
            else
            {
                textBox1.BackColor = Color.Green;
            }

Que verifica se existe os caracteres procurados na string do TextBox a função:

1
2
 
textBox1.Text.IndexOfAny(anyOf)

Recebe o array de caracteres anyOf e busca na string, se encontrar retorna o índice do caracter na string, caso não encontre retorna -1.

Dessa forma fiz um IF se retornar -1 que dizer que não existe os caracteres buscados, qualquer coisa diferente significa que foi encontrada uma ocorrência dos caracteres.

E usando:

1
2
 
textBox1.BackColor = Color.Green;

Mudamos a cor de fundo do TextBox.

Posted in C# at abril 20th, 2008. No Comments.

AcceptButton e CancelButton em C#

Vamos ver como trabalhar quando a tecla ENTER e ESC são pressionadas dentro de formulário em C#.

Crie um formulário com a seguinte aparência:

Mude a propriedade Name do botão OK para buttonOk e do botão Cancelar para buttonCancelar.

Dê duplo clique no botão OK e insira o seguinte código:

1
2
3
4
5
 
        private void buttonOK_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Botão OK", "Aviso", MessageBoxButtons.OK);
        }

Faça o mesmo para o botão Cancelar e insira o seguinte código:

1
2
3
4
5
 
        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Botão Cancelar", "Aviso", MessageBoxButtons.OK);
        }

Esses códigos são para abrir uma caixa de diálogo quando o botão for clicado, para entender mais sobre caixas de diálogo leia: http://patrickespake.wordpress.com/2008/04/19/criacao-de-caixa-de-dialogo-em-c/

O que queremos fazer é quando a tecla ENTER for pressionada o botão OK sejá chamando e quando a tecla ESC for pressionada o botão Cancelar seja chamado.

Para fazer isso existe duas propriedades no formulário chamadas AcceptButton e CancelButton.

O AcceptButton trabalha quando o ENTER é pressionado.

O CancelButton trabalha quando o ESC é pressionado.

Para definir essas propriedades clique no formulário e depois vá até a tool box Properties.

Define os valores da seguinte forma:

e

Pronto! Agora pressione F5 e veja o que acontece quando você pressiona as teclas ENTER e ESC.

Com a tecla ENTER será chamado o botão OK e com a tecla ESC será chamado o botão Cancelar.

Posted in C# at abril 20th, 2008. No Comments.

Fechar formulário em C#

Vou explicar como podemos fechar o formulário após clicar em um botão.

Para conseguir fazer esse exemplo você deve primeiro fazer o conteúdo explicado aqui: http://patrickespake.wordpress.com/2008/04/19/criacao-de-caixa-de-dialogo-em-c/.

Quando usuário clica no botão Abrir Caixa de Diálogo é executado o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult d = MessageBox.Show( "Você deseja sair?", "Aviso", MessageBoxButtons.YesNo );
 
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
            }
            else
            {
                // Código que deve ser executado quando clicar no botão NÃO
            }
        }

Esse código irá criar uma caixa de diálogo e questionar se o usuário deseja sair, atualmente não é executada nenhuma ação quando ele clica no botão Sim.

O código abaixo que define qual ação deve ser realizada quando o usuário clicar no botão Sim ou Não.

1
2
3
4
5
6
7
8
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
            }
            else
            {
                // Código que deve ser executado quando clicar no botão NÃO
            }

Modifique o código para ficar da seguinte forma:

1
2
3
4
5
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
                Close();
            }

Apenas colocamos o código:

1
Close();

Agora quando o usuário clicar no botão de confirmação Sim o formulário será fechado.

Posted in C# at abril 20th, 2008. 3 Comments.

Replace em strings no C#

Algumas vezes é necessário retirar um caracter de uma string ou substituir determinado caracter por outro.

A função Replace é a responsável por fazer isso.

Digamos que você queira pegar o texto do label “Nome:” conforme exemplo (http://patrickespake.wordpress.com/2008/04/20/acessibilidade-em-formularios-criados-em-c/).

Você poderia fazer:

1
String content = label1.Text;

Seria retornado: “&Nome:”

Isso porque usamos as opções de acessibilidade para o label, dessa forma existe o “&”.

Para retirar esse caracter você pode usar a função Replace.

1
String content = label1.Text.Replace("&", "");

Será retornado agora: “Nome:”

O primeiro parâmetro da função Replace é o caracter que você deseja trocar e o segundo parâmetro é o novo valor.

Esse exemplo usamos “” para retirar o “&” da string.

Posted in C# at abril 20th, 2008. No Comments.

Acessibilidade em formulários criados em C#

Hoje vamos ver como trabalhar com a acessibilidade em formulários criados em C#.

A idéia é permitir o acesso do usuário aos elementos do formulário através do teclado, esse recurso facilita muito o uso de um sistema, proporciona ao usuário uma experiencia mais ágil.

Nesse exemplos vamos precisar construir um formulário com um GroupBox dentro desse elementos vamos incluir um dois campos do tipo TextBox e seus respectivos labels: Nome e CPF. No rodapé do formulário crie dois botões: OK e Cancelar.

O formulário deve ficar com a seguinte aparência:

Se você pressionar F5 agora no Microsost Visual Studio 2008 você só conseguirá navegar pelos campos do formulário usando a tecla TAB do teclado, o que nós queremos é pressionar por exemplo: Alt + N e acessar o TextBox Nome e assim por diante.

Para disponibilizar essa funcionalidade devemos usar o “&” na propriedade Text dos elementos. Vamos ver como isso funciona, clique em cima do label “Nome:”, vá até a tool box Properties e altere a propriedade Text para: &Nome:

Ficando dessa forma:

Faça o mesmo para o label “CPF:” e para os botões OK e Cancelar, ficando “CP&F:”, &OK e &Cancelar.

Rode novamente a aplicação pressionada F5, quando você apertar agora a tecla Alt os labels e botões ficaram sublinados.

Mas só fazendo isso não irá funcionar, o campo label sempre procura o elemento com a propriedade TabIndex mais próxima do seu valor.

Para fazer funcionar corretamente você terá que definir os seguintes valores para os elementos do formulário:

Label “Nome:” – TabIndex = 0

TextBox “Nome:” – TabIndex = 1

Label “CPF:” – TabIndex = 2

TextBox “CPF:” – TabIndex = 3

Botão OK – TabIndex = 4

Botão Cancelar – TabIndex = 5

Fazendo isso se você usar Alt + N será dado focuo no campo nome, se fizer Alt + F será dado focuo no campo cpf, Alt + O irá dar focuo no botão OK e Alt + C irá dar focuo no botão cancelar.

Posted in C# at abril 20th, 2008. No Comments.

Criação de caixa de diálogo em C#

Vamos ver como criar uma caixa de diálogo em C#.

As caixas de diálogo são muito usados quando queremos que o usuário defina uma ação a ser tomada.

O objetivo será gerar a seguinte caixa de diálogo:

Primeiro vamos criar um novo projeto vá para o menu no Microsoft Visual Studio 2008:

FILE >> NEW PROJECT ou pressione as teclas Ctrl+Shift+N

Escolha o template Windows Forms Application e clique no botão OK.

Construa um formulário com um botão e defina a propriedade Text com o valor: Abrir Caixa de Diálogo. Esse será o rótulo do botão.

Sua tela deverá ficar da seguinte forma:

Dê duplo clique em cima do botão e vamos programar o evento clique dele.

Digite o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult d = MessageBox.Show( "Você deseja sair?", "Aviso", MessageBoxButtons.YesNo );
 
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
            }
            else
            {
                // Código que deve ser executado quando clicar no botão NÃO
            }
        }

Pressione a tecla F5 para rodar a aplicação.

Agora você clicar no botão Abrir Caixa de Diálogo será questionado se deseja sair.

Vamos entender como o código funciona.

Na linha:

1
DialogResult d = MessageBox.Show( "Você deseja sair?", "Aviso", MessageBoxButtons.YesNo );

É criada uma nova variável d do tipo DialogResult, essa variável é necessária para capturar a opção clicada na caixa de diálogo, nesse exemplo botão Sim ou Não.

A propriedade MessageBox.Show abaixo, é que cria a caixa de diálogo.

1
MessageBox.Show( "Você deseja sair?", "Aviso", MessageBoxButtons.YesNo );

O primeiro parâmetro é a mensagem da caixa de diálogo, o segundo parâmetro é o título da caixa e o terceiro padrão são os botões que devem ser exibidos, nesse exemplo apenas os botões Sim e Não, mas podem ser definidos os seguintes botões:

O código:

1
2
3
4
5
6
7
8
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
            }
            else
            {
                // Código que deve ser executado quando clicar no botão NÃO
            }

Através do d.ToString() obtém qual botão foi clicado, você pode fazer um IF e programar qual ação deve ser executada quando o botão Sim ou Não for clicado.

Posted in C# at abril 19th, 2008. 2 Comments.

Microsoft Visual Studio 2008 Express

Para fazer o download do Microsoft Visual Studio 2008 Express você deve acessar: http://www.microsoft.com/express/download/

Segundo o que li a versão Express é disponibilizada gratuitamente, pode ser usada para desenvolver aplicativos comerciais, que podem ser vendidos. A versão Express é recomendada para pessoas interessadas em aprender o framework .NET.

Criando esse artigo eu encontrei a seguinte notícia http://magnet.pro.br/cosmonet/microsoft-ameaca-pequeno-desenvolvedor

Vale a pena ler a notícia acima e analisar a postura da Microsoft.

Posted in C# at abril 13th, 2008. No Comments.

 Assinar RSS Feed