实例介绍
【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.Text.RegularExpressions;
namespace _12Timer加Label加DateTime.Now加播放WAV做闹钟
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 为时钟附初值,为定时闹钟的时分秒赋初值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
this.label1.Text = "当前时间:" DateTime.Now.ToString();//年月日时分秒
//初始化时钟闹铃
textBox2.Text = DateTime.Now.Hour.ToString();//时
textBox3.Text = (DateTime.Now.Minute 10).ToString();//分 10分钟后
textBox4.Text = DateTime.Now.Second.ToString();//秒
//初始化倒计时秒数
InitSeconds();
}
/// <summary>
/// 从上面提取的方法 因为多处用 提取一下,提高代码复用性
/// </summary>
private void InitSeconds()
{
if (radioButton1.Checked)//选中小时
{
secondCount = Convert.ToInt32(textBox1.Text) * 60 * 60;//加个正则表达式限制必须为数字
label2.Text = secondCount.ToString() "秒";
}
else if (radioButton2.Checked)
{
secondCount = Convert.ToInt32(textBox1.Text) * 60;
label2.Text = secondCount.ToString() "秒";
}
else if (radioButton3.Checked)
{
secondCount = Convert.ToInt32(textBox1.Text);
label2.Text = secondCount.ToString() "秒";
}
this.textBox1.Focus();
}
/// <summary>
/// 倒计时闹钟
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
secondCount--;
if (secondCount < 0)
{
this.timer1.Enabled = false;
this.label2.Text = "倒计时结束啦!!!";//后改剩时分秒加
//SoundPlayer sp = new SoundPlayer();
//sp.SoundLocation = @"C:\Documents and Settings\Administrator\桌面\1.wav";
sp.SoundLocation = @"wav\1.wav";
sp.Play();
return;
}
else
{
//this.label2.Text = secondCount.ToString() "秒";//Label2为
this.label2.Text = GetHmsByS(secondCount);
}
}
/// <summary>
/// 将剩余秒数转换成几小时几分几秒
/// </summary>
/// <param name="second"></param>
/// <returns></returns>
public static string GetHmsByS(int second)
{
int h, m, s;
h = second / 3600;
m = (second % 3600) / 60;
s = second % 60;
string res = "剩余" h "小时" m "分钟" s "秒";//这里有个隐式转换
return res;
}
/// <summary>
/// 倒计时启动按钮 启动Timer1控件 倒计时为0响铃
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (label2.Text.Trim().ToUpper() == "S")
{
MessageBox.Show("未生成有效的倒计时秒数...");
return;
}
else
{
if (this.button1.Text == "启动倒计时闹钟")
{
this.button1.Text = "停止倒计时闹钟";
this.timer1.Enabled = true;
}
else
{
this.button1.Text = "启动倒计时闹钟";
this.radioButton2.Checked = true;
this.textBox1.Text = "10";
//this.label2.Text = "S";
InitSeconds();
this.timer1.Enabled = false;
sp.Stop();
}
}
}
int hour, min, sec;//声明三个字段 类下(此项目下)所有方法调用的 时 分 秒
/// <summary>
/// 时钟闹钟启动按钮 启用Timer2控件 用于几点几分几秒响铃
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
if (this.button2.Text == "启动时间闹钟")
{
this.button2.Text = "停止时间闹钟";
this.label10.Text = "计时中...";//为结束提示后加
hour = Convert.ToInt32(textBox2.Text.Trim());
min = Convert.ToInt32(textBox3.Text.Trim());
sec = Convert.ToInt32(textBox4.Text.Trim());
this.timer2.Enabled = true;
}
else
{
this.button2.Text = "启动时间闹钟";
this.label10.Text = "?";//为结束提示后加
textBox2.Text = DateTime.Now.Hour.ToString();
textBox3.Text = (DateTime.Now.Minute 10).ToString();
textBox4.Text = DateTime.Now.Second.ToString();
this.timer2.Enabled = false;
sp.Stop();
}
}
SoundPlayer sp = new SoundPlayer();//==================
/// <summary>
/// 时间闹钟
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer2_Tick(object sender, EventArgs e)
{
if (DateTime.Now.Hour == hour && DateTime.Now.Minute == min && DateTime.Now.Second == sec)
{
this.timer2.Enabled = false;
this.label10.Text = "到时间啦!!!";//为到点结束提示后加
sp.SoundLocation = @"wav\1.wav";
sp.Play();
}
}
/// <summary>
/// Timer3默认就启用 1000毫秒执行一次 用于控制最上面Label1显示的时钟
/// 而Timer1和Timer2默认是不启用的 由按钮启用 用于控制闹钟
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer3_Tick(object sender, EventArgs e)
{
label1.Text = "当前时间:" DateTime.Now.ToString();
}
int secondCount = 0;//声明一个字段(默认private) 用于记录倒计时秒数
/// <summary>
/// 设置秒数 并给 倒计时显示的Label2 并为倒计时秒数的私有字段赋初值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textBox1_TextChanged(object sender, EventArgs e)
{
#region 正则表达式 方式 限制为 数字
//bool b = Regex.IsMatch(textBox1.Text, @"^(\d )$");//匹配数字
//if (!b)
//{
// MessageBox.Show("时间设置必须为数字...");
// return;
//}
#endregion
try
{
secondCount = Convert.ToInt32(this.textBox1.Text) * 60;
this.label2.Text = secondCount.ToString() "秒";
}
catch
{
MessageBox.Show("输入非法...");
return;
}
}
/// <summary>
/// 时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
secondCount = Convert.ToInt32(textBox1.Text) * 60 * 60;
label2.Text = secondCount.ToString() "秒";
}
}
/// <summary>
/// 分
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (radioButton2.Checked)
{
secondCount = Convert.ToInt32(textBox1.Text) * 60;
label2.Text = secondCount.ToString() "秒";
}
}
/// <summary>
/// 秒
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
if (radioButton3.Checked)
{
secondCount = Convert.ToInt32(textBox1.Text);
label2.Text = secondCount.ToString() "秒";
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
try
{
int tmp=Convert.ToInt32(textBox2.Text.Trim());
}
catch
{
MessageBox.Show("输入非法...");
textBox2.Focus();
return;
}
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
try
{
int tmp = Convert.ToInt32(textBox3.Text.Trim());
}
catch
{
MessageBox.Show("输入非法...");
textBox3.Focus();
return;
}
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
try
{
int tmp = Convert.ToInt32(textBox4.Text.Trim());
}
catch
{
MessageBox.Show("输入非法...");
textBox4.Focus();
return;
}
}
}
}
//本可推广出定时器似秦一中简...小KS
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论