>  기사  >  위챗 애플릿  >  CnClock 데스크탑 시계-Winform 애플릿 개발

CnClock 데스크탑 시계-Winform 애플릿 개발

高洛峰
高洛峰원래의
2017-02-23 14:36:593986검색

설 연휴에 집에 가는데 인터넷이 안되서 이틀간 심심해서 혼자서 작은 프로그램을 찾아봤습니다. 먼저 프로그램의 인터페이스를 살펴보겠습니다.

인터페이스 1:

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

인터페이스 2:

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

이 작은 프로그램은 작성하는 데 하루 이상이 걸렸으며 기능은 비교적 간단합니다.

1. 날짜, 현재를 표시할 수 있습니다. 시간, 주, 음력.

2. 프로그램을 데스크탑에 흡착시켜 데스크탑에 내장되는 효과를 얻을 수 있습니다.

3. 부팅 시 프로그램이 자동으로 시작되도록 설정할 수 있습니다.

주요 코드의 일부는 아래와 같습니다:

//设置吸附桌面功能 
 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或以上版本支持。

지금까지 발견된 작은 문제:


프로그램에서 스타트업 지원 여부를 선택할 때 레지스트리를 운영해야 합니다. 사용자의 컴퓨터에 360 Security Guard, QQ Computer Manager 등의 관리 소프트웨어가 설치되어 있는 경우 프롬프트 메시지가 나타납니다. 사용자가 레지스트리 작업을 허용하지 않기로 선택한 경우 프로그램은 예외 프롬프트를 표시하고 레지스트리 정보는 기록되지 않지만 올바른 버블 프롬프트 정보는 팝업됩니다. 이 장소는 여전히 수정되어야 합니다.

더 많은 CnClock 데스크톱 시계-Winform 애플릿 개발 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.