桌面倒计时2.0 涉及知识点详解及源码分享
自己开发的桌面倒计时小应用,走的是黑白简约风。(老爸提议我弄个红色加鞭炮背景的喜庆风= = 嗯,下次再说)
应用截图
特别说明:标题只能输入4个字符,可选日期范围在本机当前日期至距本机当前日期10000天的日期。
涉及到的一些知识点
1.保存修改后的配置
1.选择项目右键-选择“属性”
2.在左边菜单中选择“设置”,在右边的表格中填入自己需要保存的属性的名称、类型和默认值。
例 名称:IsBoss; 类型:bool;范围:用户; 值:False。
3.在form窗体代码页,导入命名空间 : using 项目名称.Properties
例 你的项目名称为pro 则导入
using pro.Properties;
4.任意方法中调用该值:
this.checkBox1.Checked = Settings.Default.IsBoss;
5.在窗体的FormClosing方法中保存此值:
Settings.Default.IsBoss = this.checkBox1.Checked;
Settings.Default.Save(); //这句一定不能少
6.OK,这样就行了。
2.委托的简易使用(看原理有点晕,搜索到了这个方法,实现了效果)
资料来源http://www.cnblogs.com/pfcan66/archive/2012/09/12/2680596.html
在项目中的使用
1.点击窗体1【FrmMain】的修改按钮【btnUpdate】打开窗体2【FrmModify】
2.点击窗体2【FrmModify】的保存按钮【btnSave】关闭窗体2【FrmModify】,刷新窗体1【FrmMain】
窗体1【FrmMain】
//"修改"按钮点击事件 private void btnUpdate_Click(object sender, EventArgs e) { FrmModify frmModify= new FrmModify(); frmModify.getHandler = load;//将方法赋给委托对象 frmModify.ShowDialog(); } //加载事件 private void load() { //方法 }
窗体2【FrmModify】
public delegate void GetHandler();//声明委托 public GetHandler getHandler; private void btnSave_Click(object sender, EventArgs e) { if (getHandler != null) { //其他操作 getHandler(); } }
3.获取日历控件MonthCalendar的选择日期
private void monthCalendar_MouseDown(object sender, MouseEventArgs e) { MonthCalendar.HitTestInfo hitInfo = monthCalendar.HitTest(e.Location); if (hitInfo.HitArea == MonthCalendar.HitArea.Date)//当选择了日期后 { txtCalendar.Text = monthCalendar.SelectionStart.ToString("yyyy-MM-dd"); } }
更多资料-MonthCalendar的mousedown方法获得选择日期
http://www.cnblogs.com/IT-Bear/archive/2013/01/23/2872504.html
4.透明效果“将Form的backColor设置为某色,修改transparencyKey为某色” Opacity 设置透明度(某色最好不要是背景图片的颜色、控件的背景色)
5.开机自启动
资料来源 :http://www.cnblogs.com/hb_cattle/articles/1553090.html
private void AutoMenu_Click(object sender, EventArgs e) { string strName = Application.ExecutablePath; string strnewName = strName.Substring(strName.LastIndexOf("\\") + 1); if (AutoMenu.Checked) { //修改注册表,使程序开机时不自动执行。 this.AutoMenu.Checked = false; Microsoft.Win32.RegistryKey Rkey
= Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); Rkey.DeleteValue(strnewName, false); MessageBox.Show("程序设置完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { this.AutoMenu.Checked = true; if (!File.Exists(strName))//指定文件是否存在 return; Microsoft.Win32.RegistryKey Rkey
= Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (Rkey == null) Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); Rkey.SetValue(strnewName, strName);//修改注册表,使程序开机时自动执行。 MessageBox.Show("程序设置完成,重新启动计算机后即可生效!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
6.发布exe的步骤


题外话:自己做小应用就是一个享受与学习的过程。
相关资料
作者:唐小熊
出处:http://www.cnblogs.com/IT-Bear/
关于作者:一头写代码的熊
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接
如有问题,可以通过kumat@foxmail.com 联系我,非常感谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构