最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C#制作一個休息提醒鬧鐘的詳細(xì)步驟

 更新時間:2023年02月01日 09:43:30   作者:摔跤貓子  
小鬧鐘大家都應(yīng)該很熟悉,它包括時間、事件,當(dāng)達(dá)到某某時間時,事件發(fā)生了,并且還有一個提示信息,下面這篇文章主要給大家介紹了關(guān)于如何基于C#制作一個休息提醒鬧鐘的詳細(xì)步驟,需要的朋友可以參考下

> 此文主要通過WinForm來制作一個休息提醒鬧鐘,通過設(shè)置時間間隔進(jìn)行提醒,避免沉浸式的投入到工作或者學(xué)習(xí)當(dāng)中,戰(zhàn)斗的同時也要照顧好自己。

實現(xiàn)流程

1.1、創(chuàng)建項目

打開Visual Studio,右側(cè)選擇創(chuàng)建新項目。

搜索框輸入winform,選擇windows窗體應(yīng)用,填寫對應(yīng)的保存路徑點擊下一步,創(chuàng)建成功后如下圖,會有一個默認(rèn)打開的Form窗體。

1.2、時間間隔配置頁

準(zhǔn)備鬧鐘圖片素材,修改窗體圖標(biāo)及標(biāo)題樣式。

通過設(shè)置窗體Text以及Icon等屬性進(jìn)行配置,同時配置StartPosition屬性值為CenterScreen,讓窗體默認(rèn)居中顯示。

在左側(cè)工具箱拖拽Label、Buttom、NumericUpDown、timer等控件,實現(xiàn)頁面大致布局。

雙擊窗體,進(jìn)入代碼界面,在頂部定義一個計數(shù)器字段。

private int MinCounter = 0;
在窗體編輯界面上雙擊啟動按鈕,生成對應(yīng)的點擊事件代碼。

在啟動按鈕點擊事件中增加業(yè)務(wù)邏輯代碼如下:還原計數(shù)器為0、禁用啟動按鈕、釋放停止按鈕、啟動定時器。

/// <summary>
/// 啟動按鈕點擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStart_Click(object sender, EventArgs e)
{
    MinCounter = 0;
    btnStart.Enabled = false;
    btnEnd.Enabled = true;
    timer1.Enabled = true;
}
在窗體編輯頁單擊timer控件,雙擊Tick,進(jìn)入到對應(yīng)的代碼中。(Tick指每當(dāng)經(jīng)過指定的時間間隔時發(fā)生的事件)

private void timer1_Tick(object sender, EventArgs e)
{
  
}
在事件中首先獲取窗體NumericUupDowm控件的值,就是用戶所輸入的分鐘數(shù)。

int min = tbMin.Value;
業(yè)務(wù)代碼:如果計數(shù)器等于用戶所輸入的分鐘數(shù),則跳轉(zhuǎn)提示窗體并禁用timer控件,否則計數(shù)器的值+1。

  private void timer1_Tick(object sender, EventArgs e)
  {
        if (MinCounter == tbMin.Value)
        {
            timer1.Enabled = false;
            using (message msg = new message(tbMin.Value.ToString()))
            {
                tip.ShowDialog();
            }
            MinCounter = 0;
            timer1.Enabled = true;
        }
        else
        {
            MinCounter++;
        }
    }

1.3、鬧鐘提醒頁

選中項目新建一個窗體,名字自定義,按上述步驟修改窗體標(biāo)題及圖標(biāo)屬性;隨后在工具箱拖拽三個label標(biāo)簽到窗體上,分別用于圖片、提示文字、倒計時等顯示

準(zhǔn)備一個素材圖,并通過其中一個label控件的image屬性進(jìn)行導(dǎo)入,然后修改AutoSize屬性值為False。

在提示窗體中定義幾個字段,分別用于控制窗體關(guān)閉倒計時、顯示已工作時長等作用。

private static int CLOSE_SEC = 300;
private string STR_MIN = "";
private int RUN_SEC = 0;
在窗體事件中接收傳遞過來的參數(shù),并進(jìn)行顯示。

 public TipForm(string _min)
 {
     STR_MIN = _min;
     InitializeComponent();
 }
窗體加載事件中設(shè)置label2的Text屬性為提示信息。

label2.Text = "親,您又工作了"+ STR_MIN + "分鐘,該休息一下啦!";
在工具箱拖拽一個timer控件到窗體上,通過其Tick屬性設(shè)置倒計時秒數(shù)顯示及窗體關(guān)閉事件。

 private void timer1_Tick(object sender, EventArgs e)
 {
     RUN_SEC++;
     if (RUN_SEC >= CLOSE_SEC)
     {
         RUN_SEC = 0;
         Close();
     } else
     {
         label2.Text = "[" + (CLOSE_SEC - RUN_SEC) + "秒后自動關(guān)閉]";
     }
 }
可以再進(jìn)行優(yōu)化,窗體加載時通過Player播放鈴聲同步提醒。

 	//播放聲音
	string wavFile = Application.StartupPath + @"\alarm.wav";
	Stream sm = null;
	if (File.Exists(wavFile))
	{
	sm = new FileStream(wavFile, FileMode.Open);
	} else
	{
	sm = Properties.Resources.Alarm02;
	}
	SoundPlayer player = new SoundPlayer(sm);
	player.Play();
	player.Dispose();

1.4、開機自啟動配置

回到Form1窗體,在工具箱拖拽出一個checkBox控件,用于勾選是否開啟自啟。

實現(xiàn)一個函數(shù),設(shè)置應(yīng)用程序開機自動運行。

 		/// <summary>
        /// 設(shè)置應(yīng)用程序開機自動運行
        /// </summary>
        /// <param name="fileName">應(yīng)用程序的文件名</param>
        /// <param name="isAutoRun">是否自動運行,為false時,取消自動運行</param>
        /// <returns>返回1成功,非1不成功</returns>
        public static String SetAutoRunByReg(string fileName, bool isAutoRun)
        {
            string reSet = string.Empty;
            RegistryKey reg = null;
            try
            {
                if (!File.Exists(fileName))
                {
                    reSet = "設(shè)置/取消自動啟動發(fā)生異常:" + fileName + "文件不存在!";
                }
                string key = @"Software\Microsoft\Windows\CurrentVersion\Run";
                string name = Path.GetFileName(fileName);
                reg = Registry.LocalMachine.OpenSubKey(key, true);
                if (reg == null)
                {
                    reg = Registry.LocalMachine.CreateSubKey(key);
                }
                if (isAutoRun)
                {
                    reg.SetValue(name, fileName);
                    reSet = "1";
                }
                else
                {
                    if (reg.GetValue(name) != null)
                    {
                        reg.DeleteValue(name);
                    }
                    reSet = "1";
                }

            }
            catch (Exception ex)
            {
                reSet = "設(shè)置/取消自動啟動發(fā)生異常:[" + ex.Message + "],請嘗試用管理員身份運行!";
            }
            finally
            {
                if (reg != null)
                {
                    reg.Close();
                }
            }
            return reSet;
        }
雙擊checkbox的click事件生成對應(yīng)的事件代碼,調(diào)用上述函數(shù)即可實現(xiàn)開機自啟效果。

 //開機自動啟動并最小化
 private void chkBoxBoot_Click(object sender, EventArgs e)
 {
     string res = SetAutoRunByReg(Application.ExecutablePath, chkBoxBoot.Checked);
     if (res != "1")
     {
         MessageBox.Show(res);
     }
 }

1.5、日志記錄

在Form1窗體定義一個函數(shù)記錄啟動以及操作日志并存入文本。

 /// <summary>
        /// 寫日志
        /// </summary>
        /// <param name="msg">日志文本</param>
        /// <param name="add_datetime">是否添加時間戳</param>
        public static void writeLog(string msg, bool add_datetime)
        {
            string logfile = Application.StartupPath + "/log.txt";
            using (StreamWriter w = File.AppendText(logfile))
            {
                if (add_datetime)
                {
                    w.WriteLine("{0}\t {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo), msg);
                }
                else
                {
                    w.WriteLine("{0}", msg);
                }

                w.Flush();
                w.Close();
            }
        }
在窗體事件中調(diào)用上述函數(shù)。

在項目文件夾-> bin文件夾 -> Debug文件夾查看日志。

1.6、最小化提示

通過Form1的Closing、Resize等屬性進(jìn)行配置,實現(xiàn)windows提示效果。

  private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //注意判斷關(guān)閉事件Reason來源于窗體按鈕,否則用菜單退出時無法退出!
            if (e.CloseReason == CloseReason.UserClosing)
            {
                e.Cancel = true;    //取消"關(guān)閉窗口"事件
                this.WindowState = FormWindowState.Minimized;    //使關(guān)閉時窗口向右下角縮小的效果
                notifyIcon1.Visible = true;
                notifyIcon1.ShowBalloonTip(3000, "提示", "程序未退出,它在這里!", ToolTipIcon.Info);
                this.Hide();
                return;
            }
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)    //最小化到系統(tǒng)托盤
            {
                notifyIcon1.Visible = true;    //顯示托盤圖標(biāo)
                notifyIcon1.ShowBalloonTip(3000, "提示", "程序未退出,它在這里!", ToolTipIcon.Info);
                this.Hide();    //隱藏窗口
            }
        }

總結(jié)

到此這篇關(guān)于基于C#制作一個休息提醒鬧鐘的文章就介紹到這了,更多相關(guān)C#制作休息提醒鬧鐘內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • WPF中的導(dǎo)航框架概述

    WPF中的導(dǎo)航框架概述

    這篇文章介紹了WPF中的導(dǎo)航框架,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決

    C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決

    這篇文章主要給大家介紹了關(guān)于C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • 使用C#開發(fā)ActiveX控件

    使用C#開發(fā)ActiveX控件

    activex控件以前也叫做ole控件,它是微軟ie支持的一種軟件組件或?qū)ο?,可以將其插入到web頁面中,實現(xiàn)在瀏覽器端執(zhí)行動態(tài)程序功能,以增強瀏覽器端的動態(tài)處理能力。通常activex控件都是用c++或vb語言開發(fā),本文介紹另一種方式,使用c#語言開發(fā)activex控件。
    2017-02-02
  • c# 繼承快速入門

    c# 繼承快速入門

    這篇文章主要介紹了c# 繼承快速入門的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C# WPF 建立無邊框(標(biāo)題欄)的登錄窗口的示例

    C# WPF 建立無邊框(標(biāo)題欄)的登錄窗口的示例

    這篇文章主要介紹了C# WPF 建立無邊框(標(biāo)題欄)的登錄窗口的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • 解析C#設(shè)計模式編程中適配器模式的實現(xiàn)

    解析C#設(shè)計模式編程中適配器模式的實現(xiàn)

    這篇文章主要介紹了C#設(shè)計模式編程中適配器模式的實現(xiàn),分別舉了類的對象適配器與對象的適配器模式的例子,需要的朋友可以參考下
    2016-02-02
  • C#實現(xiàn)計算一個點圍繞另一個點旋轉(zhuǎn)指定弧度后坐標(biāo)值的方法

    C#實現(xiàn)計算一個點圍繞另一個點旋轉(zhuǎn)指定弧度后坐標(biāo)值的方法

    這篇文章主要介紹了C#實現(xiàn)計算一個點圍繞另一個點旋轉(zhuǎn)指定弧度后坐標(biāo)值的方法,涉及C#針對坐標(biāo)的數(shù)學(xué)運算相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C# DataTable數(shù)據(jù)遍歷優(yōu)化詳解

    C# DataTable數(shù)據(jù)遍歷優(yōu)化詳解

    這篇文章主要介紹了C# DataTable數(shù)據(jù)遍歷優(yōu)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 基于反射解決類復(fù)制的實現(xiàn)方法

    基于反射解決類復(fù)制的實現(xiàn)方法

    本篇文章對反射解決類復(fù)制的實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • c# 使用Task實現(xiàn)非阻塞式的I/O操作

    c# 使用Task實現(xiàn)非阻塞式的I/O操作

    這篇文章主要介紹了c# 使用Task實現(xiàn)非阻塞式的I/O操作,幫助大家更好的理解和學(xué)習(xí)c# 編程語言,感興趣的朋友可以了解下
    2020-11-11

最新評論

金塔县| 平凉市| 日照市| 东莞市| 胶南市| 读书| 突泉县| 卢氏县| 绥棱县| 德庆县| 托里县| 桑植县| 光山县| 揭东县| 瓮安县| 子长县| 噶尔县| 隆回县| 保康县| 汉川市| 永川市| 涡阳县| 镇赉县| 紫阳县| 锡林郭勒盟| 沂南县| 天峨县| 沅江市| 清水河县| 车致| 达州市| 高要市| 若尔盖县| 长垣县| 抚顺县| 中宁县| 永昌县| 佛坪县| 渝北区| 永州市| 禹州市|