Maison >Applet WeChat >Développement de mini-programmes >Développement d'applets Winform d'horloge de bureau CnClock

Développement d'applets Winform d'horloge de bureau CnClock

高洛峰
高洛峰original
2017-02-23 14:36:594017parcourir

Je n'ai pas pu accéder à Internet lorsque je suis rentré chez moi pendant le Nouvel An chinois. Je m'ennuyais ces deux derniers jours et j'ai donc recherché un petit programme par moi-même. Jetons d'abord un coup d'œil à l'interface du programme :

Interface une :

CnClock桌面时钟-Winform小程序开发

Interface deux :

CnClock桌面时钟-Winform小程序开发

Ce petit programme a pris environ plus d'une journée à écrire, et sa fonction est relativement simple. Les fonctions de ce programme sont :

1. heure, semaine et calendrier lunaire.

2. Le programme peut être adsorbé sur le bureau pour obtenir l'effet d'être intégré dans le bureau.

3. Vous pouvez configurer le programme pour qu'il démarre automatiquement au démarrage.

Une partie du code principal est publiée ci-dessous :

//设置吸附桌面功能 
 private void 吸附桌面ToolStripMenuItem_CheckStateChanged(object sender, EventArgs e) 
 ...{ 
 //默认为勾选状态(吸附桌面),点击后即触发该事件,“吸附桌面”项勾掉了,则变量ischecked为!ischecked(false), 
 //则可以移动窗体。再次点击该菜单项,ischecked为!ischecked(true),则不能移动窗体。 
 //checkstate发生变化 
 ischecked = !ischecked; 
 if (ischecked == true) 
 ...{ 
 勾选但不移动的处理#region 勾选但不移动的处理(如果用户勾选了该项,但是并没有移动程序的位置,则进行该项判断)
 //2012年1月31日0:27:44 解决思路: 
 //先判断ini文件是否存在,如果是第一次启动程序或ini文件丢失,则无ini文件, 
 //则没有上次保存的ini配置信息,不进行读取操作,否则 
 //先从ini文件中读取上次设定的x,y的坐标值,作为old_x,old_y。再将新的坐标值与旧的 
 //坐标值进行比较,如果窗体移动了,则比较后不同,进行写入ini操作,否则不写入 
 
 if (File.Exists(pathbase + "CnClock.ini")) 
 ...{ 
 try 
 ...{ 
 StreamReader sr = new StreamReader(pathbase + "CnClock.ini", Encoding.GetEncoding("gb2312")); 
 if (sr.Peek() >= 0) 
 ...{ 
 old_x = Convert.ToInt32(sr.ReadLine()); 
 old_y = Convert.ToInt32(sr.ReadLine()); 
 } 
 sr.Close(); 
 } 
 catch (Exception ex) 
 ...{ 
 MessageBox.Show(ex.Message.ToString()); 
 } 
 } 
 #endregion 
 //2012年1月30日22:34:43,又想到一个新问题:如果用户勾选了“吸附桌面”项后,没有移动该窗体的位置, 
 //这种情况下是否要判断一下新位置与原位置是否相同??? 经考虑,需设定! 
 //2012年1月31日0:21:04 设置完成,代码见 #勾选但不移动的处理 部分 
 
 //什么时候才会执行下面这句代码“yidong = false;” 呢? 
 //分析:在form_load时不会执行,只有当用户移动窗体后,再选中"吸附桌面"项后才会执行 
 //这句代码,所以这里才是控制什么时候将新的位置坐标写入ini文件的地方,在这句下面写相应代码 
 yidong = false; 
 
 
 //如果用户勾掉了“吸附桌面”选项,则窗体可以移动,待用户确定新位置后, 
 //如果用户不勾上“吸附桌面”菜单项,则不记录新位置坐标,否则将新位置的坐标写入ini配置文件中。 
 try 
 ...{ 
 //获取窗体移动后的坐标(_x,_y) 
 _x = this.Location.X; 
 _y = this.Location.Y; 
 //勾选但不移动的处理(部分代码) 
 xin_x = this.Location.X; 
 xin_y = this.Location.Y; 
 
 //相或,一真为真。即如果x不同或y不同或两个都不同,则说明窗体位置发生变化了 
 //须执行写入操作 
 //勾选但不移动的处理(部分代码) 
 if (!(xin_x == old_x) || !(xin_y == old_y)) 
 ...{ 
 StreamWriter sw = new StreamWriter(pathbase + "CnClock.ini", false, Encoding.GetEncoding("gb2312")); 
 sw.Flush(); 
 sw.WriteLine(_x); 
 sw.WriteLine(_y); 
 sw.Close(); 
 //新位置确认后给予提示 
 this.notifyIcon1.ShowBalloonTip(5, "CnClock提示", "新位置已设定!", ToolTipIcon.Info); 
 } 
 } 
 catch (Exception ex) 
 ...{ 
 MessageBox.Show(ex.Message.ToString()); 
 } 
 } 
 else 
 ...{ 
 yidong = true; 
 } 
 }
 
 
 
 设置开机自启动功能:

 
 
  

//设置开机启动功能 
 private void 开机启动ToolStripMenuItem_CheckStateChanged(object sender, EventArgs e) 
 ...{ 
 /*设计思路: 2012年1月31日16:00:47完成 
 * 默认开机启动,则在form_load中先执行一下设置autorun方法。 
 * 用户勾掉“开机启动”项后,则取消autorun,用户勾选“开机启动”项后,则设置autorun。 
 */ 
 //初始为开机启动,则isautorun初始为true,当用户点击该项后,isautorun为false,不开机启动。 
 isautorun = !isautorun; 
 if (isautorun == true) 
 ...{ 
 //isautorun为true,开机启动 
 auToRun.SetAutoRun(Application.ExecutablePath, true); 
 //设置为开机启动后给予提示 
 this.notifyIcon1.ShowBalloonTip(5, "CnClock提示", "开机启动已设定!", ToolTipIcon.Info); 
 } 
 else 
 ...{ 
 //isautorun为false,开机不启动 
 auToRun.SetAutoRun(Application.ExecutablePath, false); 
 //设置为开机不启动后给予提示 
 this.notifyIcon1.ShowBalloonTip(5, "CnClock提示", "已关闭开机启动!", ToolTipIcon.Info); 
 } 
 }
 
 
 
 
程序下载地址:CnClock1.0版:http://dl.dbank.com/c0qbry08qv
            CnClock2.0版:http://dl.dbank.com/c0m78h7dty
            如果以上页面无法下载可到下面页面下载:http://www.kuaipan.cn/index.php?ac=file&oid=5028779638390791
 
 
说明:两个版本的区别是1.0版是方形显示的,2.0版是条形显示的(见文首图片)。
 
该程序需要.net Framework2.0或以上版本支持。

Un petit problème découvert jusqu'à présent :


Lorsque le programme choisit de prendre en charge le démarrage, le registre doit être exploité. Si l'ordinateur de l'utilisateur est équipé d'un logiciel de gestion tel que 360 ​​Security Guard ou QQ Computer Manager, un message d'invite apparaîtra. Si l'utilisateur choisit de ne pas autoriser les opérations de registre, le programme affichera une invite d'exception et les informations de registre ne seront pas écrites, mais les informations d'invite de bulle correctes apparaîtront. Cet endroit doit encore être modifié.

Pour plus d'articles sur le développement d'applets Winform-Horloge de bureau CnClock, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn