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
- Adicione um novo WindowForm ao seu projeto, nomeie para FrmSplash
- Adicione uma progressbar e outros elementos que julgar interessante;
- Adicione um Timer
- Altere a propriedade Enabled do Timer para True
- 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% }
- 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 } }
- 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 } }