C#窗体程序入门,实现3秒倒计时关闭显示器,实现系统托盘,右键菜单。
来源:互联网 发布:filezilla中软件怎么下 编辑:程序博客网 时间:2024/06/01 16:27
3秒倒计时关闭显示器
本文适合新入门C#的同学了解和学习:
软件功能简单,实用。
适合有的时候电脑需要开机又想立即关闭显示器,比如下楼吃饭,比如睡觉前,还比如游戏副本挂机时候。
源代码在最后
先看界面:
这是运行界面。
这是托盘提示:
这是托盘右键菜单。
我们可以看到主要用了以下元素:
- 1.计时器,timer
- 2.托盘,notifyIcon
- 3.菜单,contextMenuStrip
- 4.关闭显示器的具体实现
隐藏边框透明效果
实现
- 1.计时器,和关闭显示器实现
布局部分就不讲解了
首先我们拖入一个timer,把enable属性设置为true,interval属性设置为1000(1秒),双击timer自动产生tick事件
int i = 3;//倒计时 private void timer1_Tick(object sender, EventArgs e) { i--; //Console.WriteLine("" + i);//控制台输出 labelCountDown.Text = "" + i; if (i == 0) { timer1.Stop(); WindowState = FormWindowState.Minimized; notifyIcon1.Visible = true;//显示托盘 this.Hide(); //隐藏窗体 //开启一个线程,关闭显示器,如果在主线程关闭显示器,再激活显示器会出问题(自己试验) Thread fThread = new Thread(new ThreadStart(closeSc)); fThread.Start(); } } //关闭显示器 private void closeSc(){ SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);//关闭显示器 }
- 2.托盘,和菜单
首先我们拖入一个notifyIcon,再拖入一个contextMenuStrip,把notifyIcon的ContextMenuStrip属性设置刚刚拖入的这个contextMenuStrip,Text属性设置一个鼠标指在上面显示的值,contextMenuStrip在界面添加自己需要的菜单名称,双击菜单名字就会自动产生对应的回调监听事件
//退出程序 private void exit() { this.Dispose();//释放资源 this.Close();//关闭当前窗口 Application.Exit();//强制所有消息中止,退出所有的窗体 Application.ExitThread();//强制中止调用线程上的所有消息 System.Environment.Exit(0);//退出程序 } //右键菜单关闭显示器 private void closeSC_Click(object sender, EventArgs e) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); notifyIcon1.Visible = false;//隐藏托盘 i = 3; labelCountDown.Text = "" + i;//刷新显示为3 timer1.Start();//计时器启动 } //关闭显示器 private void closeSc(){ SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);//关闭显示器 } //右键菜单退出 private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { exit(); }
- 3.拦截窗体关闭按钮
这个是为了点击关闭时候最小化到托盘
//窗体关闭按钮 private void Form_main_FormClosing(object sender, FormClosingEventArgs e) { //窗体关闭原因为单击"关闭"按钮或Alt+F4 if (e.CloseReason == CloseReason.UserClosing) { WindowState = FormWindowState.Minimized; notifyIcon1.Visible = true;//显示托盘 e.Cancel = true; //取消关闭操作 表现为不关闭窗体 this.Hide(); //隐藏窗体 } }
完整代码
using System;using System.Runtime.InteropServices;using System.Threading;using System.Windows.Forms;namespace 关闭显示器{ public partial class Form_main : Form { [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); private const uint WM_SYSCOMMAND = 0x112; //系统消息 private const int SC_MONITORPOWER = 0xF170; //关闭显示器的系统命令 private const int MonitorPowerOff = 2; //2为PowerOff, 1为省电状态,-1为开机 private const int SC_SCREENSAVE = 0xf140; // 启动屏幕保护消息 private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);//广播消息,所有顶级窗体都会接收 int i = 3;//倒计时 //构造函数 public Form_main() { //屏幕中央启动 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; InitializeComponent(); } private void timer1_Tick(object sender, EventArgs e) { i--; //Console.WriteLine("" + i);//控制台输出 labelCountDown.Text = "" + i; if (i == 0) { timer1.Stop(); WindowState = FormWindowState.Minimized; notifyIcon1.Visible = true;//显示托盘 this.Hide(); //隐藏窗体 Thread fThread = new Thread(new ThreadStart(closeSc)); fThread.Start(); // SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);//关闭显示器 //SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_SCREENSAVE, 0); // 启动屏保 } } //跳转到QQ private void labelAuthor_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("https://user.qzone.qq.com/85161441"); } //退出程序 private void exit() { this.Dispose();//释放资源 this.Close();//关闭当前窗口 Application.Exit();//强制所有消息中止,退出所有的窗体 Application.ExitThread();//强制中止调用线程上的所有消息 System.Environment.Exit(0);//退出程序 } //右键菜单关闭显示器 private void closeSC_Click(object sender, EventArgs e) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); notifyIcon1.Visible = false;//隐藏托盘 i = 3; labelCountDown.Text = "" + i;//刷新显示为3 timer1.Start();//计时器启动 } //关闭显示器 private void closeSc(){ SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);//关闭显示器 } //右键菜单退出 private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { exit(); } //窗体关闭按钮 private void Form_main_FormClosing(object sender, FormClosingEventArgs e) { //窗体关闭原因为单击"关闭"按钮或Alt+F4 if (e.CloseReason == CloseReason.UserClosing) { WindowState = FormWindowState.Minimized; notifyIcon1.Visible = true;//显示托盘 e.Cancel = true; //取消关闭操作 表现为不关闭窗体 this.Hide(); //隐藏窗体 } } }}
【推荐】无边框透明版下载(免积分,免费!!)
有边框有托盘下载(1积分)
点击下载源代码,整个工程(2积分)
0 0
- C#窗体程序入门,实现3秒倒计时关闭显示器,实现系统托盘,右键菜单。
- C#实现窗体最小化时存至系统托盘,并为notifyicon添加右键菜单
- C#实现窗体最小化时存至系统托盘,并为notifyicon添加右键菜单
- C#实现WinForm程序的动态系统托图标 关闭主窗体时最小化到系统托盘
- Adobe AIR右键菜单和系统托盘实现
- Java程序实现系统托盘菜单
- Flex AIR 系统托盘于右键托盘菜单的实现
- Qt实现系统托盘以及托盘的右键菜单
- 15秒倒计时实现
- 时分秒倒计时 实现
- C#中用鼠标右键选中tabpage选项卡 并且弹出右键菜单,实现选项卡的关闭
- C#中用鼠标右键选中tabpage选项卡 并且弹出右键菜单,实现选项卡的关闭
- C#视频播放器实现右键菜单
- C#实现系统托盘图标
- C#实现右键菜单的程序要点
- VC实现系统托盘程序
- C# Winform实现MDI程序子窗体与主窗体菜单合并
- C#实现阻止关闭显示器和系统待机
- 中国大学生计算机设计大赛报名及作品提交攻略
- Commit failed with error ***remains in conflict 解决android studio svn文件冲突的问题
- 求最大面积
- 是时候客观评价Retrofit了,Retrofit这几点你必须明白!
- 关于SSH登录非常慢的案例
- C#窗体程序入门,实现3秒倒计时关闭显示器,实现系统托盘,右键菜单。
- oracle实施问题Could not get a databaseId from dataSource
- CodeForces 487B RMQ贪心
- http协议的再介绍
- 大型分布式网站架构技术总结
- css3中的content字符编码
- QGraphicsView用法总结
- vim 常用命令
- Linux下mysql中文乱码