c prepared by the tomato clock countdown timer code

  • 2021-01-14 06:26:29
  • OfStack

Well, we can take a look at the idea of the graphical interface in addition to ICONS and music two resources other code. The time is not countdown in 1 thread by Time class which is the timer component's own. It's okay to create an Record class for the export record...

Program.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace pomodoro
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Form1.Designer.cs


namespace pomodoro
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variables.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up all resources in use.
        /// </summary>
        /// <param name="disposing"> If managed resources should be released, for true ; Otherwise, for false . </param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Code generated by the form designer
        /// <summary>
        /// The designer supports the required methods - Don't
        /// Modify the content of this method using the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.label3 = new System.Windows.Forms.Label();
            this.textBox2 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.button3 = new System.Windows.Forms.Button();
            this.richTextBox1 = new System.Windows.Forms.RichTextBox();
            this.label4 = new System.Windows.Forms.Label();
            this.button4 = new System.Windows.Forms.Button();
            this.button5 = new System.Windows.Forms.Button();
            this.button6 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // label1
            //
            this.label1.BackColor = System.Drawing.Color.Black;
            this.label1.Font = new System.Drawing.Font(" blackbody ", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.label1.ForeColor = System.Drawing.Color.Red;
            this.label1.Location = new System.Drawing.Point(12, 9);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(283, 70);
            this.label1.TabIndex = 0;
            this.label1.Text = " The countdown   00:00";
            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            //
            // label2
            //
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(12, 104);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(65, 12);
            this.label2.TabIndex = 1;
            this.label2.Text = " Tomato Time: ";
            //
            // textBox1
            //
            this.textBox1.Location = new System.Drawing.Point(83, 101);
            this.textBox1.MaxLength = 5;
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(54, 21);
            this.textBox1.TabIndex = 2;
            this.textBox1.Text = "25";
            //
            // label3
            //
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(12, 136);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(65, 12);
            this.label3.TabIndex = 5;
            this.label3.Text = " Work arrangement: ";
            //
            // textBox2
            //
            this.textBox2.Location = new System.Drawing.Point(85, 133);
            this.textBox2.MaxLength = 300;
            this.textBox2.Name = "textBox2";
            this.textBox2.Size = new System.Drawing.Size(198, 21);
            this.textBox2.TabIndex = 6;
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(13, 163);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 7;
            this.button1.Text = " start ";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // button2
            //
            this.button2.Location = new System.Drawing.Point(108, 163);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(75, 23);
            this.button2.TabIndex = 8;
            this.button2.Text = " stop ";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            //
            // button3
            //
            this.button3.Location = new System.Drawing.Point(208, 162);
            this.button3.Name = "button3";
            this.button3.Size = new System.Drawing.Size(75, 23);
            this.button3.TabIndex = 9;
            this.button3.Text = " suspended ";
            this.button3.UseVisualStyleBackColor = true;
            this.button3.Click += new System.EventHandler(this.button3_Click);
            //
            // richTextBox1
            //
            this.richTextBox1.BackColor = System.Drawing.Color.White;
            this.richTextBox1.ForeColor = System.Drawing.Color.Black;
            this.richTextBox1.Location = new System.Drawing.Point(13, 193);
            this.richTextBox1.Name = "richTextBox1";
            this.richTextBox1.ReadOnly = true;
            this.richTextBox1.Size = new System.Drawing.Size(270, 279);
            this.richTextBox1.TabIndex = 10;
            this.richTextBox1.Text = "";
            //
            // label4
            //
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(144, 104);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(29, 12);
            this.label4.TabIndex = 11;
            this.label4.Text = " minutes ";
            //
            // button4
            //
            this.button4.Location = new System.Drawing.Point(13, 479);
            this.button4.Name = "button4";
            this.button4.Size = new System.Drawing.Size(75, 23);
            this.button4.TabIndex = 12;
            this.button4.Text = " empty ";
            this.button4.UseVisualStyleBackColor = true;
            this.button4.Click += new System.EventHandler(this.button4_Click);
            //
            // button5
            //
            this.button5.Location = new System.Drawing.Point(208, 478);
            this.button5.Name = "button5";
            this.button5.Size = new System.Drawing.Size(75, 23);
            this.button5.TabIndex = 13;
            this.button5.Text = " export ";
            this.button5.UseVisualStyleBackColor = true;
            this.button5.Click += new System.EventHandler(this.button5_Click);
            //
            // button6
            //
            this.button6.Font = new System.Drawing.Font(" Microsoft jas black ", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.button6.Location = new System.Drawing.Point(191, 93);
            this.button6.Name = "button6";
            this.button6.Size = new System.Drawing.Size(104, 34);
            this.button6.TabIndex = 14;
            this.button6.Text = " pomodoro V1.1";
            this.button6.UseVisualStyleBackColor = true;
            this.button6.Click += new System.EventHandler(this.button6_Click_1);
            //
            // Form1
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(309, 508);
            this.Controls.Add(this.button6);
            this.Controls.Add(this.button5);
            this.Controls.Add(this.button4);
            this.Controls.Add(this.label4);
            this.Controls.Add(this.richTextBox1);
            this.Controls.Add(this.button3);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox2);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = " pomodoro ";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);
            this.PerformLayout();
        }
        #endregion
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.TextBox textBox2;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button3;
        private System.Windows.Forms.RichTextBox richTextBox1;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Button button4;
        private System.Windows.Forms.Button button5;
        private System.Windows.Forms.Button button6;
    }
}

Form1.cs


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.Threading;
using System.Collections;
using System.IO;
using System.Media;
using System.Reflection;
namespace pomodoro
{
    public partial class Form1 : Form
    {
        private Time time;
        private Thread cutDownThread;
        private bool pause=false;
        private int num = 0;
        private ArrayList records;
        string title = " The countdown   ";
        public void cutDownTime()
        {
            while (!time.Stop)
            {
                Thread.Sleep(1000);
                time.subOneSecond();
                this.Invoke((EventHandler)delegate
                {
                    label1.Text = title + time.showTime();
                });
            }
            this.Invoke((EventHandler)delegate
            {
                richTextBox1.AppendText(" complete \n");
                Record r = (Record)records[records.Count - 1];
                r.getEnd(" Complete status: Complete ");
            });
            Assembly asm = Assembly.GetExecutingAssembly();
            string name = asm.GetName().Name;
            SoundPlayer sp = new SoundPlayer( pomodoro .Properties.Resources._3462_clip);
            sp.Play();
            MessageBox.Show(" Time is up!! ");
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.AppendText(" Completed tomato clock record: \n");
            records = new ArrayList();
        }
        protected override void OnClosing(CancelEventArgs e)
        {
            if (cutDownThread != null)
                if (cutDownThread.IsAlive)
                    cutDownThread.Abort();
            base.OnClosing(e);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (!pause)
            {
                double min;
                if (!double.TryParse(textBox1.Text, out min))
                {
                    MessageBox.Show(" Please enter the number correctly ");
                    return;
                }
                if (min < 0&&min>99)
                {
                    MessageBox.Show(" Please enter the 1 No more than 99 The positive number ");
                    return;
                }
                time = new Time(min);
                label1.Text = title + time.showTime();
                cutDownThread = new Thread(new ThreadStart(cutDownTime));
                cutDownThread.Start();
                StringBuilder temp = new StringBuilder();
                temp.Append(" pomodoro ").Append(++num).Append(":");
                if (textBox2.Text != "")
                    temp.Append(textBox2.Text);
                else
                    temp.Append(" No specific arrangement ");
                records.Add(new Record(temp.ToString(), min));
                temp.Append("\n Complete status: ");
                richTextBox1.AppendText(temp.ToString());
            }
            else
            {
                pause = false;
                label1.Text = title + time.showTime();
                cutDownThread = new Thread(new ThreadStart(cutDownTime));
                cutDownThread.Start();
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if (cutDownThread != null)
                if (cutDownThread.IsAlive)
                    cutDownThread.Abort();
            label1.Text = title + time.showTime();
            pause = true;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (cutDownThread != null)
                if (cutDownThread.IsAlive)
                    cutDownThread.Abort();
            time = new Time(0);
            label1.Text = title + time.showTime();
            richTextBox1.AppendText(" unfinished \n");
            Record r = (Record)records[records.Count - 1];
            r.getEnd(" Complete status: Not complete ");
        }
        private void button4_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show(" Are you really going to empty it? \n Clearing the record will remove all previous records \n  Complete the tomato clock record elimination \n  Except, it is recommended to export the record first. ",
                " confirm ",MessageBoxButtons.YesNo);
            if (dr == DialogResult.No)
            {
                MessageBox.Show(" Clear operation undone ");
            }
            else if (dr == DialogResult.Yes)
            {
                num = 0;
                richTextBox1.Text = "";
                richTextBox1.AppendText(" Completed tomato clock record: \n");
                if (cutDownThread != null)
                    if (cutDownThread.IsAlive)
                        cutDownThread.Abort();
                time = new Time(0);
                label1.Text = title + time.showTime();
                MessageBox.Show(" Tomato clock record cleared and reset! ");
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            string fn="";
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = " Text file (*.txt) |*.txt";
            ofd.FilterIndex = 1;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                fn = ofd.FileName;
                FileStream fs = new FileStream(fn, FileMode.Append, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs, Encoding.Default);
                sw.WriteLine("************************************************");
                sw.WriteLine("         " + DateTime.Now + " The tomato clock records   ");
                sw.WriteLine("************************************************");
                foreach (Record r in records)
                {
                    sw.Write(r.showRecord());
                }
                sw.Close();
                fs.Close();
            }
        }
        private void button6_Click(object sender, EventArgs e)
        {
            double min = double.Parse(textBox2.Text);
            int a = (int)min;
            int b = (int)((min - a) * 60);
            textBox2.Text = a.ToString()+":"+b.ToString();
        }
        private void button6_Click_1(object sender, EventArgs e)
        {
            MessageBox.Show("          pomodoro V1.1\n In the use of such as encountered problems or found loopholes, \n  Please contact the QQ : 583490567 , thank you! \n  This product is produced with honor by Xiaoqi Studio \n Copyright: Copyright © Jiang Xiaoqi 2015",
                " About the Tomato Bell ", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    public class Time
    {
        private int sec;
        private int min;
        private bool stop;
        public Time(double min)
        {
            this.min = (int)min;
            sec = (int)((min - this.min) * 60);
            stop = false;
        }
        public void subOneSecond()
        {
            if (sec > 0)
                sec--;
            else if (min > 0)
            {
                min--;
                sec = 59;
            }
            else
                stop = true;
        }
        public bool Stop
        {
            get { return stop; }
        }
        public string showTime()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(min<10?"0"+min:min.ToString()).Append(":").Append(sec<10?"0"+sec:sec.ToString());
            return sb.ToString();
        }
    }
    public class Record
    {
        private string text;
        private DateTime first;
        private DateTime last;
        private double length;
        private string state;
        public Record(string text,double length)
        {
            this.text = text;
            first = DateTime.Now;
            this.length = length;
        }
        public void getEnd(string state)
        {
            last = DateTime.Now;
            this.state = state;
        }
        public string showRecord()
        {
            if (last == null)
                last = DateTime.Now;
            if (state == null)
                state = " The unknown ";
            StringBuilder s = new StringBuilder();
            s.Append(" Starting and ending time: ").Append(first.ToString()).Append("-").AppendLine(last.ToString());
            s.AppendLine(text).Append(state).Append("\t").
                Append(" Length of tomato clock: ").Append(length.ToString()).AppendLine(" minutes ");
            return s.ToString();
        }
    }
}

The above is all the code that this article shares, hope you can enjoy.


Related articles: