Fernanda Sallai

Blog de desenvolvimento e negócios.

Cursos de férias

Pessoal,

Estão abertas as matrículas para os cursos da IMEJR-USP.

Atualmente, oferem três cursos relacionados a plataforma .NET:

* C# e Orientação a Objetos - 40h
* Desenvolvimento web com ASP.NET MVC - 40h
* Laboratório de ASP.NET MVC avançado - 24h

Para obter mais informações sobre valores, datas e horários entre em contato através do site www.ime.usp.br/imejr.

Bons estudos...

Windows Forms - Carregar impressoras instaladas

Neste post iremos aprender como carregar o nome de todas as impressoras que estão instaladas na nossa máquina em um ComboBox.

Vamos lá ?!

Crie um formulário e inclua um ComboBox com o nome ddlImpressora  (veja o exemplo na figura 1 - claro você pode criar o layout do jeito que preferir).

Figura 1 : Formulário de seleção de impressoras.

No evento Load do formulário inclua o seguinte código:

ddlImpressora.Items.Insert(0, "SELECIONE");

foreach (string nomeImpressora in PrinterSettings.InstalledPrinters)
{
     ddlImpressora.Items.Add(nomeImpressora.ToUpper());
}

ddlImpressora.SelectedIndex = 0;

Para finalizar será necessário incluir o namespace referente a classe PrinterSettings:

using System.Drawing.Printing;

Viu como é simples! Agora é só ver o resultado final (figura 2).

Figura 2: Exibindo as impressoras instaladas na máquina.

Até a próxima ...

C# - Deslocar o ponteiro numa dataGridView

No sistema que estou desenvolvendo para o TCC, possui uma tela para listar os clientes ativos  num datagridview conforme abaixo:

Para abrir o formulário de visualização e ou alteração de um cliente basta selecioná-lo (conforme imagem a seguir) :

Após visualizar e ou alterar os dados do cliente, ao voltar para a tela de listagem de cliente, a linha do cliente escolhido deverá voltar selecionado como abaixo:

Porém o cursor está na primeira linha do datagridview....

Vamos resolver isso ?!

datagridview.celulacorrente = datagridview.linhas[linhaselecionada].celulas[0];

dgvClientes.CurrentCell = dgvClientes.Rows[i].Cells[0];

Agora o cursor fica na linha que está selecionada:

Espero que isso tenha ajudado...

Até a próxima...

C# - Usando expressões regulares para validar formato de email e cep

Pessoal,

Nas telas de cadastro, além de validações de campos obrigatórios, tive que verificar se o cep e o email informado tinha o formato correto. Para isso usei as expressões regulares.

Mas o que são expressões regulares ? !

Conforme Aurélio Marinho Jargas  "É uma composição de símbolos, caracteres com funções especiais, que, agrupados entre si e com caracteres literais, formam uma sequência, uma expressão. Está expressão é interpretada como uma regra, que indicará sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condições.";

Como fazer ?!

No botão salvar existe um método de validação dos campos. Se todas as validações forem realizadas com sucesso é chamado método de inclusão, se não é exibida a mensagem informando que o campo obrigatório não foi preenchido ou foi preenchido incorretamente. 

Vamos ao método de validação ...

private bool ValidarCampos()
{
    bool camposPreenchidos = true;
 
    if (txtCep.Text == string.Empty)
    {
        mensagem = "Informe o cep do cliente.";
        camposPreenchidos = false;
        txtCep.Focus();
        return camposPreenchidos;
    }
    else
    {
        if (!ValidaCep(txtCep.Text))
        {
            camposPreenchidos = false;
            mensagem = "O CEP informado é inválido. Por favor verifique.";
            txtCep.Focus();
            return camposPreenchidos;
        }
    }

    if (txtEmail.Text != string.Empty)
    {
         if (!IsValidEmail(txtEmail.Text))
        {
            camposPreenchidos = false;
            mensagem = "O e-mail informado é inválido. Por favor verifique.";
            txtEmail.Focus();
            return camposPreenchidos;
        }
    }

    return camposPreenchidos;

private bool ValidaCep(string cep)
{
    if (cep.Length == 8)
    {
        cep = cep.Substring(0, 5) + "-" + cep.Substring(5, 3);
        txtCep.Text = cep;
    }
    return System.Text.RegularExpressions.Regex.IsMatch(cep, ("[0-9]{5}-[0-9]{3}"));
}

private bool IsValidEmail(string email)     
{
    return System.Text.RegularExpressions.Regex.IsMatch(email, ("(?<user>[^@]+)@(?<host>.+)"));
}

Até o próximo post....

Qualquer dúvida entre em contato comigo.....

 

C# - Enviando email

Todos nós sabemos da importância de permitir que você se comunique com as pessoas que acessam o seu site. Por isto, irei demonstrar de maneira simples o envio de emails utilizando C#.

Vamos começar !

Web.config

//Incluir uma chave chamada emailFrom contendo o email do remetente dentro da tag appSettings:
<appSettings>
    <add key="emailFrom" value="emailRemetente"/>
</appSettings>

<system.net>
    <mailSettings>
           <smtp>
          //Incluir no host o smtp, no userName o endereço de email do remetente e no password a senha do email do remetente: 
              <network host="smtpEmail" port="25" userName="emailRemetente" password="senhaEmailRemetente"/>
         </smtp>
     </mailSettings>
</system.net>

Classe email

Criar uma classe que irá conter os dados abaixo:

//Incluir o namespace:
using System.Net.Mail;


/// <summary>
/// Método para enviar email
/// </summary>
/// <param name="mailAddressTo">
Endereço de email do Remetente</param> 

 public static void SendEmail(string mailAddressTo)
{
      //Cria o objeto que envia o e-mail 
     SmtpClient client = new SmtpClient();
     //Cria o endereço de email do remetente 
     MailAddress from = new MailAddress(ConfigurationSettings.AppSettings["EmailFrom"]);
     //Cria o endereço de email do destinatário -->
     MailAddress to = new MailAddress(mailAddressTo);

      MailMessage message = new MailMessage(from, to);
      message.IsBodyHtml = true;
    
      //Assunto do email 
      message.Subject = "Assunto do email";
      //Conteúdo do email 
      message.Body = "Conteúdo do email";

      try
      {
           //Envia o email 
           client.Send(message);
      }
      catch
      {
      }
}

Para finalizar basta chamar o método no cs da página que utilizará  para enviar o email:

//Nome da classe.Nome do método(endereço do email do destinatário) 

Mail.SendEmail(mailAddressTo);

C# - Gerando relatório em excel

Neste post, irei falar sobre os relatórios que são imprescindíveis em qualquer projeto, independente da complexibilidade.

Demonstrarei um exemplo que utiliza o excel como base, a grande vantagem neste caso é flexibilidade para o usuário que mais habituado com as ferramentas do office conseguirá adaptar, formatar e personalizar os dados extraídos conforme sua necessidade.

Vamos começar ?!

Criei uma página aspx:

No aspx: inclui uma label

<asp:Label ID="lblWarning" runat="server"></asp:Label>

No aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    //inclui a chamada do método GenerateExcel()
    GenerateExcel();
}

//Método para gerar o relatório em excel 
protected void GenerateExcel()
{   
    StringBuilder excel = new StringBuilder();

    try
    {
        //StringBuilder excel vai receber o conteúdo do método GetHeader()
        excel.Append(GetHeader());
        //StringBuilder excel vai receber o conteúdo do método GetRecords()
        excel.Append(GetRecords());

        //Se estiver definido como true, o ASP.NET processará toda a página e depois de concluído, mandará o output para o cliente
        //Se estiver definido como false, o ASP.NET já irá enviando o output para o cliente na medida em que a página vai sendo processada
       HttpContext.Current.Response.BufferOutput = false;
        //Limpa o response
        HttpContext.Current.Response.Clear();
        //Nome dado para salvar o relatório. Por exemplo: relatório gerado dia 30/03/2009 vai ter o nome de: rel_participants_30/03/2009
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=rel_participants_" + DateTime.Now.ToString("d") + ".xls");
        //Tipo de aplicação que será gerado o relatório. Aqui será p excel.
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Unicode;
        //StringBuilder excel vai receber tudo que está no response
        HttpContext.Current.Response.Write(excel.ToString());
        //Envia imediatamente ao browser todo o conteúdo em buffer
        HttpContext.Current.Response.Flush();
        //Finaliza o response e é exibido até a linha onde se encontra o comando
        HttpContext.Current.Response.End();
    }
    catch
    {
        //A label criada no aspx só serve para mostrar a mensagem de erro, caso ocorra problemas ao gerar o relatório
        lblWarning.Text = "Ocorreu um erro durante geração do relatório. Tente novamente.";
    }           
}

          //Método que retorna o cabeçalho do relatório
          private string GetHeader()
          {
            StringBuilder header = new StringBuilder();
            header.Append("Data" + "\t");
            header.Append("Nome" + "\t");
            header.Append("Endereço" + "\t");
            header.Append("Email" + "\t");
            header.Append("Telefone" + "\t");
            header.Append("Celular" + "\t");
            header.Append("Sexo" + "\t");
            header.Append("Data de aniversário" + "\t");
            header.Append("RG" + "\t");
            header.Append("Nome do responsável" + "\t");
            header.Append("RG do responsável" + "\t");
            header.Append("Como ficou sabendo da promoção" + "\t");
            header.Append("Login" + Environment.NewLine);

            return (header.ToString());
          }

        //Método que retorna os registros do relatório
        private string GetRecords()
        {
            StringBuilder records = new StringBuilder();
   
            //Incluir o método que irá trazer os registros que necessitem para seu relatório
            //No meu caso, fiz um método que retorna uma lista de participantes
            foreach (Participant participants in Participant.ListParticipants())
            {
                //Preenchimento dos campos que mostrarei no meu relatório
                records.Append(participants.DateIns.ToString("d") + "\t");
                records.Append(participants.Name + "\t");
                records.Append(participants.Address + "\t");
                records.Append(participants.Email + "\t");
                records.Append(" " + participants.Phone + "\t");
                records.Append(" " + participants.Cell + "\t");
                records.Append(participants.Sex + "\t");
                records.Append(" " + participants.DateOfBirth.ToString("d") + "\t");
                records.Append(" " + participants.Rg + "\t");
                records.Append(participants.ResponsableName + "\t");
                records.Append(" " + participants.ResponsableRg + "\t");
                records.Append(participants.KnowAsThePromotion + "\t");
                records.Append(participants.Login + Environment.NewLine);
            }

            return (records.ToString());
        }

Realizados todos esses passos, ao acessar essa página irá ser exibida a caixa de diálogo e o relatório abaixo:

 

 

Um pouco sobre mim...

Olá… Meu nome é Fernanda Sallai. Bacharel em Sistemas de Informação e atuo na área de desenvolvimento.

Colaboradora do Portal Linha de Código e editora da revista Codificando.Net.

Estou sempre em busca de novos conhecimentos e espero compartilhá-los aqui no blog.

Obrigada pela visita e bons estudos.