C#
- Relógio com
barra de progresso e som
![]() |
Ja pensou em criar um relógio usando barra de progresso e ainda incluir um tic-tac ? |
Publico com frequência pequenos exemplos de programas feitos em uma determinada linguagem com objetivo de mostrar a utilização de um recurso da linguagem para fins de estudo.
Hoje veremos um programa feito na linguagem C# que exibe as horas usando uma barra de progresso. Você tem ainda a opção de incluir o tic-tac do relógio.
O objetivo é mostrar como usar os controles Timer, ProgressBar e como executar arquivos mp3 usando o Windows Media Player na linguagem C#.
Criando o projeto no VS 2017 Community
Crie um novo projeto do tipo Windows Forms App(.NET Framework) no Visual Studio 2017 Community com o nome de RelogioProgressBar.
No formulário padrão Form1.cs inclua os seguintes controles:
Disponha os controles conforme o leiaute abaixo:
O projeto possui um arquivo App.Config com o código abaixo onde usamos a tag <supportedRuntime> definindo a versão suportada pelo aplicativo. Se você não usar esse recurso a versão do runtime usado para compilar o aplicativo será usada:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
|
Para referenciar o Windows Media Player abra a ToolBox e clique com o botão direito sobre a ToolBox e clique em Choose Items...;
Selecione a guia COM Components e marque o item Windows Media Player;
1- Os namespaces usados no projeto :
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using WMPLib;
2 - No início do formulário crie uma instância do Windows Media Player
WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
No método Main() temos um laço infinito onde o usuário informa a url que deseja pingar e a seguir chama o método TestaPing() passando a url informada. Para sair basta teclar Enter.
3 - No evento Load do formulário inclua o código abaixo
private void
Form1_Load(object sender, EventArgs e) { timerClock.Interval = 1000; // um segundo timerClock.Enabled = true; } |
Neste código ativamos o Timer e definimos o intervalo de tick em 1 segundo.
4- No evento Tick do controle Timer temos o código que exibe a hora, minuto e segundo nas Progress Bar :
private void timerClock_Tick(object sender, EventArgs e)
{
int h = DateTime.Now.Hour;
if (h > 12)
{
h = h - 12;
pbHora.Value = h;
}
else
{
pbHora.Value = h;
}
pbMinutos.Value = DateTime.Now.Minute;
pbSegundos.Value = DateTime.Now.Second;
lblHour.Text = h.ToString();
lblMinute.Text = DateTime.Now.Minute.ToString();
lblSecond.Text = DateTime.Now.Second.ToString();
lblData.Text = DateTime.Now.ToLongDateString();
}
|
4 - A seguir temos o código de cada evento Click dos controles radiobuttons para mudar a cor da barra de progresso:
private
void rdbVerde_Click(object sender, EventArgs e) { ModificarCorProgressBar.SetState(pbHora, 1); ModificarCorProgressBar.SetState(pbMinutos, 1); ModificarCorProgressBar.SetState(pbSegundos, 1); }
private void rdbVermelho_Click(object sender, EventArgs e)
private void rdbAmarelo_Click(object sender, EventArgs e) |
A mudança da cor é feita pelo método ModificarCorProgressBar que é visto a seguir:
5 - O método ModificarCorProgressBar():
public static class ModificarCorProgressBar { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr w, IntPtr l);
public static void SetState(this ProgressBar pBar, int state) |
6 - Para ativar/desativar o som do tic-tac usamos o evento ChechedChanged o controle ChechedBox, que executa o arquivo tic-tac.mp3 que esta na pasta Som do projeto:
private void chkSom_CheckedChanged(object sender, EventArgs e) { string caminho = Environment.CurrentDirectory; caminho = caminho.Replace("\\bin\\Debug", ""); caminho = caminho + "\\Som\\tic-tac.mp3"; //define um número de execuções wplayer.settings.playCount = 100; wplayer.URL = caminho; if (chkSom.Checked) { wplayer.controls.play(); } else { wplayer.controls.stop(); wplayer.close(); } } |
Executando o projeto iremos obter o seguinte resultado:
Pegue o código do projeto aqui:
RelogioProgressBar.zip
"E, quanto
fizerdes por palavras ou por obras, fazei tudo em nome do Senhor Jesus, dando
por ele graças a Deus Pai."
Colossenses 3:17
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? ![]() |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET
C# - Relógio Digital - Macoratti
VB .NET - Relógio de Ponto - Macoratti
C# - Relógio Analógico - Macoratti
Xamarin Forms - Exibindo um relógio analógico - Macoratti
Xamarin Android - Criando um Relógio Analógico - Macoratti
C# - Obtendo a data e a hora por TimeZone - Macoratti
WPF- Relógio Animado - Macoratti