Trabalhando com a ProgressBar no C#

Telas de Splash são utilizadas em muitos sistemas. Elas são aquelas janelas de boas vindas e normalmente são seguidas de uma barra de progresso para que o usuário acompanhe o carregamento do programa.

A tela de splash não é apenas uma tela de boas-vindas com um layout bonito. Enquanto a barra de progresso corre, muitas coisas são testadas; por exemplo: verificar se o banco de dados está acessível, verificar se há atualizações do sistema na Internet, verificar se a chave de licença do sistema está correta, se há impressora conectada, se tem internet, se os arquivos do sistema estão íntegros, não estando ausentes ou corrompidos, etc….

Exemplo básico

  1. Adicione um novo WindowForm ao seu projeto, nomeie para FrmSplash
  2. Adicione uma progressbar e outros elementos que julgar interessante;
  3. Adicione um Timer
  4. Altere a propriedade Enabled do Timer para True
  5. Acrescente o seguinte código no Timer
    if (progressBar1.Value < 100)
     {
         progressBar1.Value = progressBar1.Value + 10; 
     }
    if (progressBar1.Value == 100)
     {
         FrmPrincipal frmPrincipal = new FrmPrincipal();
         frmPrincipal.Show(); // abre o form principal
         timer1.Stop();       // para o relógio
         this.Hide();         //fecha a janela após completar os 100%
     }
  6. Os testes do sistema podem ser colocados também dentro do timer, escolha um período do timer para fazer o teste, por exemplo; quando a ProgressBar estiver com o valor de 10% de progresso vamos testar se o banco de dados está acessível, então basta acrescentar este outro código dentro do timer;
    if (progressBar1.Value == 10)
    {
     try
     {
        Model dados = new Model(); // instancia a classe de conexão
        MySqlConnection conectar = new MySqlConnection("server=" + dados.server + ";database=" + dados.database +
                                                       "; Uid=" + dados.Uid + "; pwd=" + dados.pwd + ";");
        conectar.Open(); 
     }
     catch (Exception ex)
     {
        timer1.Stop(); // para o relógio em caso de erro
        MessageBox.Show("Problemas com a conexão com o banco de dados!"); 
        this.Dispose(); // encerra o sistema
     }
    }
  7. Dessa forma, dentro do timer você pode colocar os testes que desejar, por exemplo; verificar a conexão com a Internet;
    if (progressBar1.Value == 20)
    {
    
       System.Uri Url = new System.Uri("http://www.microsoft.com"); //é sempre bom por um site que costuma estar sempre on para testar a conexão
       System.Net.WebRequest WebReq;
       System.Net.WebResponse Resp;
       WebReq = System.Net.WebRequest.Create(Url);
       
       try
       {
         Resp = WebReq.GetResponse();
         Resp.Close();
         WebReq = null;
       }
       catch
       {
         timer1.Stop(); // para o relógio em caso de erro
         MessageBox.Show("Não existe conexão com a internet.");
         this.Dispose(); // encerra o sistema
       }
     }