Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa

 

E ai Galera bllz, vamos começar a nossa segunda parte da calculadora simples, nesta parte estaremos mostrando tratamento de erro, ou seja, em caso do usuário entrar com caracteres especiais ou letras e vez de números, utilizando TRY CATCH.

1-Nessa parte vamos copiar a nossa interface anterior. Mais caso alguém queira criar novamente sem problemas nessa interface usaremos as seguintes componentes:

3 textbox, 4 buttons e 4 label, para mais detalhes verificar o tutorial anterior Calculadora Simples C#.

http://seucurso.com.br/index.php?option=com_content&view=article&id=256:calculadora-simples-c&catid=917:c-c-c&Itemid=76

 

 

2- Entrando no código fonte da nossa calculadora, vamos declarar Double para n1, n2, calculo assim como na imagem abaixo. Reparem que estamos utilizando os mesmo códigos do nosso tutorial anterior Calculadora Simples C#, a diferença é que estaremos utilizando o try catch para tratamento de erros.

 

 

3- Nesta parte vamos criar uma função converter, nela estaremos convertendo os valores digitado, e atribuindo para n1 , n2 os valores já convertido.

 

Try  Catch irá tratar os possíveis erros.

try tentará fazer a conversão, caso não consiga.catch estará nos mostrando a mensagem do possível erro.

 

 

4- Aqui entraremos no evento do Button de soma, e digitaremos os seguintes códigos.

 

 

Onde a primeira linha estará chamando função converter o qual criamos agora pouco, calculo recebe a soma dos valores de n1 + n2, Tb_resultado recebe o valor do calculo e converte para string.

Esse mesmo código pode ser aplicado nos outros buttons, a única coisa que irá ser alterado será os sinais de – (subtrair), *( multiplicar) e / (dividir).

5-Programa em execução.

Aqui está um exemplo de quando o usuário entra com caractere (letra), o programa exibirá uma mensagem de erro.

 

 

 

 

Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa

 


1)Estaremos desenvolvendo uma calculadora no C# utilizando o WFP(Windows forms Application), essa calculadora terá só algumas funções basicas que são somar, subtrair, multiplicar e dividir. Para isso vamos criar um novo projeto, selecionar WFP, dar um nome para nossa aplicação e logo em seguida clicar em OK.

 

 

2)Aqui  estaremos utilizando  4 buttons que seram utilizado para as quatro operações básicas, soma, subtrair, multiplicar, dividir. Usaremos  3 label,  3 textbox, assim como na imagem.

 

 

3) Nesta parte vamos organizar nossos  Buttons , label e os textbox. Assim como na imagem Abaixo.

 

 

4) Para alterar os nome da label, clica na label com o botão direito seleciona a opção propriedade e altera o nome de label1 para o nome NUM1.:  e  NUM2.:  .

Faze isso com os textbox que são as caixa de textos,  renomeando para TB_N1 , TB_N2  e TB_RESULTADO.

TB_N1 =  Caixa de texto num1

TB_N2= Caixa de texto num2

Tb_resultado= Caixa de texto resultado.

 

 

 

 5) Clicando duas vezes no botão de soma, irá abrir uma nova janela a qual contem os eventos do Button. Iremos digitar os seguinte códigos:

{code}

            private void button3_Click(object sender, EventArgs e)

        {

            double n1, n2, calculo;// Declarar Double p/ n1,n2,calculo.

            n1 = double.Parse(tb_n1.Text); //n1 recebe convertido valor digitado

            n2 = double.Parse(tb_n2.Text); //n2 recebe convertido valor digitado

            calculo = n1 + n2; //calculo recebe a soma dos dois valores

            tb_resultado.Text = calculo.ToString(); //Tb_resultado recebe valor            do calculo e converte para string.

        }

{/code}

 

Depois pressione a tecla F5, para rodar a aplicação, ocorrendo tudo certo esse mesmo código terá que ser colocado nos demais buttons, fazendo uma simples modificação no lugar da soma você colocar – (Subtrair), * (Multiplicar) / (Dividir).

 

 

6)Aplicação em execução.

Logo mais estarei  ensinando como fazer um tratamento de erro na calculadora, em caso de um usuário entrar com um caracter em vez de numero.

Ate a Próxima  Pessoal.

 

Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa

 

CRIANDO UM CHAT EM C#

 

O primeiro passo para criar um CHAT é entender como ele funciona, como eu consigo enviar e receber mensagens, como estou conectado com outra pessoa. Na verdade tudo é muito simples, em um CHAT você manda a mensagem, através da internet ela chega a um servidor, que através dele a mensagem é repassada para a pessoa com quem você está conversando.

Agora que temos uma noção básica de como enviamos e recebemos mensagens, vamos começar o nosso próprio CHAT. Para esse projeto, precisaremos do “Visual C# Express”, que podemos encontrar no site www.microsoft.com/express/Downloads/




encontre o link para o Visual C# Express;

1. Na página para a qual você será direcionado encontre e clique no link INSTALL NOW – ENGLISH



2. O arquivo que será baixado tem pouco mais de 3 MB; Não é necessário guardá-lo em seu computador já que ele inicia uma instalação on-line, ou seja, durante a instalação é que serão baixados os arquivos necessários para o funcionamento do Visual C# Express;

Após o inicio da execução da instalação deverá ser apresentada a janela abaixo:

Se concordar em enviar informações sobre o uso do Visual C# Express para a Microsoft deixe a caixa de seleção marcada e clique em AVANÇAR, senão desmarque-a antes de continuar;

 

3. Na próxima janela, antes de continuar, você deve aceitar os termos de licenciamento do software, leia o contrato atentamente e, caso concordar, selecione a opção I HAVE READ AND ACCEPT THE LICENSE TERMS;


 

4. Na janela seguinte temos a opção de instalar o Microsoft SQL Server 2008 Express, Selecione se desejar e avance;

 

 

 

 

5. Mude o local de instalação se achar necessário e clique no botão INSTALL:


 

 

6. A instalação irá iniciar e poderá demorar um tempo considerável dependendo da velocidade de sua conexão à Internet e o computador poderá ser reiniciado durante o processo;

 

 


 

 

Terminado a instalação, vamos começar nosso projeto:

  • Abra o Visual C# Express, e clique em “New Project...”;

  • Feito isso, clique em “Windows Forms Application”, e de um nome para seu projeto e clique em OK;

 

  • Feito isso, iremos alterar o nome de nosso formulário Form1.cs, para isso, clique com o botão direito do mouse, e selecione a opção Rename;


 

  • De o nome de frmCliente.cs (lembre –se sempre de colocar o .cs, pois caso contrário o programa apresentara erro na hora da compilação), aparecerá uma tela pedindo a confirmação da mudança do nome, clique na opção SIM;


 

  • Feito isso, iremos inserir alguns componentes em nosso formulário, encontre no menu do lado esquerdo (Toolbox) os componentes: 2 Button, 2 Label, e 4 TextBox; (para inserir os componentes no form, basta clicar e arrastar para o form)

 

 

  • 1. Selecione o 3º TexBox, clique com o botão direito e selecione a opção propertties;

 

 

  • Na tela que apareceu, encontre a opção Multiline, o valor estará em False, mude – o para True;

 

  • Com isso poderemos mudar o tamanho do TextBox3 para multilinear;

 

  • Agora iremos mudar o nome das propriedades dos componentes, mude – as conforme a tabela abaixo:

 

COMPONENTE NAME TEXT
Label1 Label1 Servidor IP
Label2 Label2 Usuário
TexBox1 txtServidorIP  
TexBox2 txtUsuario  
TexBox3 txtLog  
TexBox4 txtMessagem  
Button1 btnConectar Conectar
Button2 btnEnviar Envia
  • Feito isso, de um duplo clique no botão Conectar, arraste a página até o topo e digite os seguintes comandos:

{code}

using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;

{/code}

 

  • Feito isso, antes do comando (“private void btnConectar_Click(object sender, EventArgs e)”), digite os seguintes comandos:

 

{code}

private string NomeUsuario = "Desconhecido";

private StreamWriter stwEnviador;

private StreamReader strReceptor;

private TcpClient tcpServidor;

private delegate void AtualizaLogCallBack(string strMensagem);

private delegate void FechaConexaoCallBack(string strMotivo);

private Thread mensagemThread;

private IPAddress enderecoIP;

private bool Conectado;

{/code}

 

  • Volte para o formulário clicando na opção frmCliente.cs, novamente de um duplo clique no botão Conectar e digite os seguintes comandos:

 

{code}

if (Conectado == false)

{

InicializaConexao();

}

else

{

FechaConexao("Desconectado a pedido do usuário.");

}

{/code}

 

  • Agora iremos programar a inicialização da conexão com o servidor, aperte uma vez a seta para baixo, de um enter e digite o seguinte código:

 

{code}

private void InicializaConexao()

{

enderecoIP = IPAddress.Parse(txtServidorIP.Text);

tcpServidor = new TcpClient();

tcpServidor.Connect(enderecoIP, 2502);

Conectado = true;

NomeUsuario = txtUsuario.Text;

txtServidorIP.Enabled = false;

txtUsuario.Enabled = false;

txtMensagem.Enabled = true;

btnEnviar.Enabled = true;

btnConectar.Text = "Desconectado";

stwEnviador = new StreamWriter(tcpServidor.GetStream());

stwEnviador.WriteLine(txtUsuario.Text);

stwEnviador.Flush();

mensagemThread = new Thread(new ThreadStart(RecebeMensagens));

mensagemThread.Start();

}

{/code}

 

  • Agora iremos programar para que possamos receber as mensagens:

 

{code}

private void RecebeMensagens()

{

strReceptor = new StreamReader(tcpServidor.GetStream());

string ConResposta = strReceptor.ReadLine();

if (ConResposta[0] == '1')

{

this.Invoke(new AtualizaLogCallBack(this.AtualizaLog), new object[] { "Conectado com Sucesso!" });

}

else

{

string motivo = "Não Conectado : ";

motivo += ConResposta.Substring(2, ConResposta.Length - 2);

this.Invoke(new FechaConexaoCallBack(this.FechaConexao), new object[] { motivo });

return;

}

while (Conectado)

{

this.Invoke(new AtualizaLogCallBack(this.AtualizaLog), new object[] { strReceptor.ReadLine() });

}

}

{/code}

 

  • Feito isso, iremos programar um atualizador de mensagens, para que possamos recebe-las automaticamente:

 

{code}

private void AtualizaLog(string strMensagem)

{

txtLog.AppendText(strMensagem + "\r\n");

}

{/code}

 

  • Agora, volte para o formulário inicial, e de um duplo clique no botão Enviar, e digite o seguinte código:

 

{code}

EnviaMensagem();

{/code}

 

  • Feito isso, volte para o formulário inicial, com o botão direito clique no 3º TextBox, e clique em properties, seleciona a janela events, procure pela opção KeyPress e digite o código abaixo:

 

 

 

{code}

if (e.KeyChar == (char)13)

{

EnviaMensagem();

}

{/code}

 

  • Para enviarmos uma mensagem, precisamos clicar no botão Enviar ou pressionando a tecla Enter, ao fazermos isso um evento será gerado, nos permitindo visualizar as mensagens. Vamos agora programar esse evento:

 

{code}

private void EnviaMensagem()

{

if (txtMensagem.Lines.Length >= 1)

{

stwEnviador.WriteLine(txtMensagem.Text);

stwEnviador.Flush();

txtMensagem.Lines = null;

}

txtMensagem.Text = "";

}

{/code}

 

  • Agora iremos fechar a conexão com o servidor:

 

{code}

private void FechaConexao(string Motivo)

{

txtLog.AppendText(Motivo + "\r\n");

txtServidorIP.Enabled = true;

txtUsuario.Enabled = true;

txtMensagem.Enabled = false;

btnEnviar.Enabled = false;

btnConectar.Text = "Conectado";

 

Conectado = false;

stwEnviador.Close();

strReceptor.Close();

tcpServidor.Close();

}

{/code}

 

  • Suba a página até encontrar o comando “public frmCliente()”, e digite o seguinte comando:

 

{code}

Application.ApplicationExit += new EventHandler(OnApplicationExit);

{/code}

 

  • 1. Feito isso, dessa a página até encontrar o comando “Private Void FechaConexao (String Motivo)”, após encerra-lo digite o comando abaixo:
 
{code}

public void OnApplicationExit(object sender, EventArgs e)

{

if (Conectado == true)

{

Conectado = false;

stwEnviador.Close();

strReceptor.Close();

tcpServidor.Close();

}

}

{/code}

 

  • Feito isso, compile o seu projeto pressionando a tecla F5 do teclado, se houver erros verifique o tutorial novamente para ver se não há erros de sintaxe.

 

 

Continuação acesse http://seucurso.com.br/index.php?option=com_content&view=article&id=120:criando-um-chat-em-c-parte2&catid=905:linguagem-de-programacao&Itemid=69

Programa beseado pelo site http://www.macoratti.net/11/08/c_chat1.htm.

 

 

Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa

CRIANDO UM CHAT EM C#

Com o seu chat pronto, agora iremos criar o servidor para enviar e receber as mensagens que o receptor (chat) irá visualizar.

Agora, vamos começar o nosso projeto:

  • Abra o C# Express, clique no botão new Project;


  • Clique em “Windows Forms Application”, de um nome para seu projeto e clique em OK;

 

 

  • Altere o nome de seu formulário (Form1.cs), para frmServidor.cs, na mensagem que aparecer clique em Sim;

  • No seu formulário insira 4 componentes, sendo eles: 1 Label, 1 Button e 2 TexBox;

  • Altere as propriedades dos componentes conforme a tabela abaixo:

 

Componente Name Text
Label1 Label1 Endereço IP
Button1 btnConectar Iniciar Conexão
TexBox1 txtIP  
TexBox2 txtLog  

 

  • Com as propriedades dos componentes devidamente alteradas, de um duplo clique no botão, suba a página até o topo e digite o seguinte comando:

 

{code}

Using System.Net;

{/code}

 

 

  • Encontre o comando “public frmServidor()”, conte 5 linhas para baixo, de um enter e digite o seguinte comando:

 

{code}

private delegate void AtualizaStatusCallback(string strMensagem);

{/code}

 

  • Volte para o formulário, de um duplo clique no botão, e digite o seguinte comando:

 

{code}

IPAddress enderecoIP = IPAddress.Parse(txtIP.Text);

ChatServidor mainServidor = new ChatServidor(enderecoIP);

ChatServidor.StatusChanged += new StatusChangedEventHandler(mainServer_StatusChanged);

mainServidor.IniciaAtendimento();

txtLog.AppendText("Monitorando as conexões...\r\n");

{/code}

 

 

  • Feito isso, digite o seguinte comando:

 

{code}

public void mainServidor_StatusChanged(object sender, StatusChangedEventArgs e)

{

this.Invoke(new AtualizaStatusCallback(this.AtualizaStatus), new object[] { e.EventMessage });

}

 

private void AtualizaStatus(string strMensagem)

{

txtLog.AppendText(strMensagem + "\r\n");

}

{/code}

 

  • Agora iremos criar uma classe chamada ChatServidor.cs, para fazer isso clique no menu “Project” e na opção “Add Class...”;

 

  • Depois de selecione a opção Class, mude o nome para ChatServidor.cs e clique em Add;

 

 

  • Feito isso, suba a página até o topo e digite os seguintes comandos:

 

{code}

using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
using System.Collections;

{/code}

 

  • Antes do comando( Class ChatServidor ), digite o seguinte comando:

 

{code}

public class StatusChangedEventArgs : EventArgs

{

private string EventMsg;

public string EventMessage

{

get { return EventMsg; }

set { EventMsg = value; }

}

public StatusChangedEventArgs(string strEventMsg)

{

EventMsg = strEventMsg;

}

}

 

{/code}

 

  • Feito isso digite o seguinte comando:

 

{code}

public delegate void StatusChangedEventHandler(object sender, StatusChangedEventArgs e);

{/code}

 

  • Logo após o comando ( Class ChatServidor ), digite o comando:

 

{code}

public static Hashtable htUsuarios = new Hashtable(30);

public static Hashtable htConexoes = new Hashtable(30);

private IPAddress enderecoIP;

private TcpClient tcpCliente;

public static event StatusChangedEventHandler StatusChanged;

private static StatusChangedEventArgs e;

public ChatServidor(IPAddress endereco)

{

enderecoIP = endereco;

}

private Thread thrListener;

private TcpListener tlsCliente;

bool ServRodando = false;

public static void IncluiUsuario(TcpClient tcpUsuario, string strUsername)

{

ChatServidor.htUsuarios.Add(strUsername, tcpUsuario);

ChatServidor.htConexoes.Add(tcpUsuario, strUsername);

EnviaMensagemAdmin(htConexoes[tcpUsuario] + " entrou..");

}

public static void RemoveUsuario(TcpClient tcpUsuario)

{

if (htConexoes[tcpUsuario] != null)

{

EnviaMensagemAdmin(htConexoes[tcpUsuario] + " saiu...");

ChatServidor.htUsuarios.Remove(ChatServidor.htConexoes[tcpUsuario]);

ChatServidor.htConexoes.Remove(tcpUsuario);

}

}

public static void OnStatusChanged(StatusChangedEventArgs e)

{

StatusChangedEventHandler statusHandler = StatusChanged;

if (statusHandler != null)

{

statusHandler(null, e);

}

}

public static void EnviaMensagemAdmin(string Mensagem)

{

StreamWriter swSenderSender;

e = new StatusChangedEventArgs("Administrador: " + Mensagem);

OnStatusChanged(e);

TcpClient[] tcpClientes = new TcpClient[ChatServidor.htUsuarios.Count];

ChatServidor.htUsuarios.Values.CopyTo(tcpClientes, 0);

for (int i = 0; i < tcpClientes.Length; i++)

{

try

{

if (Mensagem.Trim() == "" || tcpClientes[i] == null)

{

continue;

}

swSenderSender = new StreamWriter(tcpClientes[i].GetStream());

swSenderSender.WriteLine("Administrador: " + Mensagem);

swSenderSender.Flush();

swSenderSender = null;

}

catch

{

RemoveUsuario(tcpClientes[i]);

}

}

}

public static void EnviaMensagem(string Origem, string Mensagem)

{

StreamWriter swSenderSender;

e = new StatusChangedEventArgs(Origem + " disse : " + Mensagem);

OnStatusChanged(e);

TcpClient[] tcpClientes = new TcpClient[ChatServidor.htUsuarios.Count];

ChatServidor.htUsuarios.Values.CopyTo(tcpClientes, 0);

for (int i = 0; i < tcpClientes.Length; i++)

{

try

{

if (Mensagem.Trim() == "" || tcpClientes[i] == null)

{

continue;

}

swSenderSender = new StreamWriter(tcpClientes[i].GetStream());

swSenderSender.WriteLine(Origem + " disse: " + Mensagem);

swSenderSender.Flush();

swSenderSender = null;

}

catch

{

RemoveUsuario(tcpClientes[i]);

}

}

}

 

public void IniciaAtendimento()

{

try

{

IPAddress ipaLocal = enderecoIP;

tlsCliente = new TcpListener(ipaLocal, 2502);

tlsCliente.Start();

ServRodando = true;

thrListener = new Thread(MantemAtendimento);

thrListener.Start();

}

catch (Exception ex)

{

throw ex;

}

}

 

private void MantemAtendimento()

{

while (ServRodando == true)

{

tcpCliente = tlsCliente.AcceptTcpClient();

Conexao newConnection = new Conexao(tcpCliente);

}

}

{/code}

 

 

  • Feito isso, antes da ultima chave ( } ), digite o seguinte comando:

 

{code}

class Conexao

{

TcpClient tcpCliente;

private Thread thrSender;

private StreamReader srReceptor;

private StreamWriter swEnviador;

private string usuarioAtual;

private string strResposta;

public Conexao(TcpClient tcpCon)

{

tcpCliente = tcpCon;

thrSender = new Thread(AceitaCliente);

thrSender.Start();

}

private void FechaConexao()

{

tcpCliente.Close();

srReceptor.Close();

swEnviador.Close();

}

private void AceitaCliente()

{

srReceptor = new System.IO.StreamReader(tcpCliente.GetStream());

swEnviador = new System.IO.StreamWriter(tcpCliente.GetStream());

usuarioAtual = srReceptor.ReadLine();

if (usuarioAtual != "")

{

if (ChatServidor.htUsuarios.Contains(usuarioAtual) == true)

{

swEnviador.WriteLine("0|Este nome de usuário já existe.");

swEnviador.Flush();

FechaConexao();

return;

}

else if (usuarioAtual == "Administrator")

{

swEnviador.WriteLine("0|Este nome de usuário é reservado.");

swEnviador.Flush();

FechaConexao();

return;

}

else

{

swEnviador.WriteLine("1");

swEnviador.Flush();

ChatServidor.IncluiUsuario(tcpCliente, usuarioAtual);

}

}

else

{

FechaConexao();

return;

}

try

{

while ((strResposta = srReceptor.ReadLine()) != "")

{

if (strResposta == null)

{

ChatServidor.RemoveUsuario(tcpCliente);

}

else

{

ChatServidor.EnviaMensagem(usuarioAtual, strResposta);

}

}

}

catch

{

ChatServidor.RemoveUsuario(tcpCliente);

}

}

}

{/code}

 

  • Pronto, basta somente compilar para ver se o código está certo, caso não funcione, revise todo o seu código.

 

 

 

 

 

 

Programa Baseado pelo site http://www.macoratti.net/11/08/c_chat2.htm