TimeNotifier.cs Code using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TimeNotifier
{ public partial class TimeNotifier : Form
{
/**//// <summary>
/// Const
/// </summary>
public class ConstDefs
{
internal static int DefaultSlot = 1800;
internal static int OneThousant = 1000;
}
/**//// <summary>
/// Constructor
/// </summary>
public TimeNotifier()
{
InitializeComponent();
SetDefault();
RegisterEvent();
TimeReminder();
}
/**//// <summary>
/// Exit
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.newTimeThread.Abort();
Application.Exit();
}
/**//// <summary>
/// Reset
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void resetToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Hide();
}
}
} TimeNotifier.event.cs
Code using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using System.Threading;
namespace TimeNotifier
{ public partial class TimeNotifier
{
/**//// <summary>
/// 注册事件.
/// </summary>
private void RegisterEvent()
{
this.Closing += new System.ComponentModel.CancelEventHandler(Tray_Closing);
this.Apply.Click += new EventHandler(Apply_Click);
}
/**//// <summary>
/// Closing
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Tray_Closing(object sender, CancelEventArgs e)
{
this.Hide();
e.Cancel = true;
}
/**//// <summary>
/// Reset
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Apply_Click(object sender, EventArgs e)
{
this.timeSlot = Int32.Parse(this.textBox1.Text);
this.newTimeThread.Abort();
this.TimeReminder();
}
/**//// <summary>
/// Set Tray
/// </summary>
private void SetDefault()
{
timeSlot = ConstDefs.DefaultSlot;
this.textBox1.Text = timeSlot.ToString();
}
/**//// <summary>
/// 启动新线程.
/// </summary>
private void TimeReminder()
{
if (newTimeThread != null)
{
newTimeThread.Abort();
}
newTimeThread = new Thread(new ThreadStart(TimeNotice));
newTimeThread.Start();
}
private void TimeNotice()
{
while (true)
{
Thread.Sleep(this.timeSlot * ConstDefs.OneThousant);
MessageBox.Show("Time to have a rest" + DateTime.Now.ToString());
}
}
}
} TimeNotifier.Designer.cs Code using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace TimeNotifier
{ public partial class TimeNotifier
{
/**//// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
private NotifyIcon TrayIcon;
private ContextMenu TrayMenu;
private MenuItem subMenuExit;
private MenuItem subMenuReset;
private int timeSlot;
private Thread newTimeThread;
/**//// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise,
false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Windows Form Designer generated code#region Windows Form Designer generated code
/**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TimeNotifier));
this.Apply = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.gbSetting = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label();
this.lblInfo = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.resetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.gbSetting.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// Apply
//
this.Apply.Location = new System.Drawing.Point(47, 173);
this.Apply.Name = "Apply";
this.Apply.Size = new System.Drawing.Size(75, 25);
this.Apply.TabIndex = 1;
this.Apply.Text = "OK";
this.Apply.UseVisualStyleBackColor = true;
//
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(151, 173);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 25);
this.btnCancel.TabIndex = 2;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// gbSetting
//
this.gbSetting.Controls.Add(this.label1);
this.gbSetting.Controls.Add(this.lblInfo);
this.gbSetting.Controls.Add(this.textBox1);
this.gbSetting.Location = new System.Drawing.Point(-2, 2);
this.gbSetting.Name = "gbSetting";
this.gbSetting.Size = new System.Drawing.Size(274, 85);
this.gbSetting.TabIndex = 4;
this.gbSetting.TabStop = false;
this.gbSetting.Text = "设置";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(124, 52);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(19, 13);
this.label1.TabIndex = 6;
this.label1.Text = "秒";
//
// lblInfo
//
this.lblInfo.AutoSize = true;
this.lblInfo.Location = new System.Drawing.Point(47, 21);
this.lblInfo.Name = "lblInfo";
this.lblInfo.Size = new System.Drawing.Size(100, 13);
this.lblInfo.TabIndex = 5;
this.lblInfo.Text = "提醒间隔时间(秒):";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(49, 49);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(69, 20);
this.textBox1.TabIndex = 4;
//
// notifyIcon1
//
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject
("notifyIcon1.Icon")));
this.notifyIcon1.Text = "定时提醒";
this.notifyIcon1.Visible = true;
this.notifyIcon1.DoubleClick += new System.EventHandler
(this.resetToolStripMenuItem_Click);
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.resetToolStripMenuItem,
this.exitToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.RenderMode =
System.Windows.Forms.ToolStripRenderMode.Professional; this.contextMenuStrip1.Size = new System.Drawing.Size(153, 70);
//
// resetToolStripMenuItem
//
this.resetToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject
("resetToolStripMenuItem.Image")));
this.resetToolStripMenuItem.Name = "resetToolStripMenuItem";
this.resetToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.resetToolStripMenuItem.Text = "Reset";
this.resetToolStripMenuItem.Click += new System.EventHandler
(this.resetToolStripMenuItem_Click);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler
(this.exitToolStripMenuItem_Click);
//
// TimeNotifier
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(272, 224);
this.Controls.Add(this.gbSetting);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.Apply);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MinimizeBox = false;
this.Name = "TimeNotifier";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "定时设置";
this.gbSetting.ResumeLayout(false);
this.gbSetting.PerformLayout();
this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private Button Apply;
private Button btnCancel;
private GroupBox gbSetting;
private Label lblInfo;
private TextBox textBox1;
private Label label1;
private NotifyIcon notifyIcon1;
private ContextMenuStrip contextMenuStrip1;
private ToolStripMenuItem exitToolStripMenuItem;
private ToolStripMenuItem resetToolStripMenuItem;
}
} |
能够设定提醒的时间间隔,以秒记,我一般设置为1800,半个小时,默认为半个小时。
设定后点击ok,关闭主窗口,任务栏会有个托盘。
实现原理:
启动一个新线程,让其sleep所设置的时间间隔的长度,然后弹出对话框。
下面是代码文件:只有一个类TimeNotifier
有三个PartialClass TimeNotifier.cs, TimeNotifier.event.cs,TimeNotifier.Designer.cs