C#编写自动关机程序复习的知识

首先一个程序第一要素是logo
在设置里面可以设置程序图标,在ICON里设置。
ICON图标可以在网上下载。
这些都是表面功夫
程序中涉及到Buton、Label、Timer、Notiflcon控件
Button按钮控件,可以设计点击事件
如下所示:
private void button1_Click(object sender, EventArgs e)
{
// int shi, fen, miao;
if (Flag_True == 0)
{
Flag_True = 1;
}
else
{
button1.Text = "确定";
label6.Text = " ";
label7.Text = " ";
label5.Text = " ";
//label1.Text = "定时关机设置";
Flag_True = 0;
}
shi = (int)numericUpDown3.Value;
fen = (int)numericUpDown2.Value;
miao = (int)numericUpDown1.Value;
time_set = shi * 3600 + fen * 60 + miao;
}
label控件操作简单
能够显示字符,并且其成员有text,可以随时更改文本
timer控件相当于嵌入式中的定时器,在属性中行为一栏中设置ENABLE 并且设置interval时间间隔500就是半秒。
private void timer1_Tick(object sender, EventArgs e)
{
Int32 time_now;
Int32 extra;
if (Flag_True == 1)
{
if (DateTime.Now.Minute == fen && DateTime.Now.Hour == shi && DateTime.Now.Second == miao)
{
button1.Text = "取消";
label6.Text = "剩余关机时间";
label7.Text = "秒";
label5.Text = "0";
System.Diagnostics.Process.Start("shutdown","-s -t 0");//关机程序
}//shutdown
else
{
time_now = DateTime.Now.Second + DateTime.Now.Minute * 60 + DateTime.Now.Hour * 3600;
extra = time_set - time_now;
if (extra > 0)
{
button1.Text = "取消";
label6.Text = "剩余关机时间";
label7.Text = "秒";
//extra/3600
label5.Text = extra.ToString();
}
else
{
Flag_True = 0;
} }
}
}
上面我每隔半秒进入中断一次,判断,如果已经设置过定时关机,就判断是否到达关机时间,并显示还剩多少秒关机。如果没有设置定时关机,就不显示。
其中button1和Label的text都可以随时更改。
基本功能设置完成
接下来还有一个最小化到托盘的设置
用到Notiflcon控件
此控件设置最小化图标,在设置里可以设置icon图标。
他带有的事件有鼠标单击,鼠标双击,单击,双击。
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
}
上述我设置了鼠标单击,代码里是恢复可视化,正常窗口。
再之得设置程序最小化时隐藏在下边
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon1.Visible = true;
}
}
上述就是一个关机程序,自己做着玩的。。
整体构架如下图所示。
namespace 关机任务管理V1._0
{
public partial class Form1 : Form
{
int shi, fen, miao;
Int32 time_set;
int Flag_True = 0;
public Form1()
{ InitializeComponent(); } private void Form1_Load(object sender, EventArgs e)
{ } private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown1.Value == -1)
numericUpDown1.Value = 60;
else if (numericUpDown1.Value == 61)
numericUpDown1.Value = 0;
} private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown2.Value == -1)
numericUpDown2.Value = 60;
else if (numericUpDown2.Value == 61)
numericUpDown2.Value = 0; } private void numericUpDown3_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown3.Value == 25)
numericUpDown3.Value = 0;
else if (numericUpDown3.Value == -1)
numericUpDown3.Value = 24;
} private void button1_Click(object sender, EventArgs e)
{
// int shi, fen, miao;
if (Flag_True == 0)
{
Flag_True = 1;
}
else
{
button1.Text = "确定";
label6.Text = " ";
label7.Text = " ";
label5.Text = " ";
//label1.Text = "定时关机设置";
Flag_True = 0;
}
shi = (int)numericUpDown3.Value;
fen = (int)numericUpDown2.Value;
miao = (int)numericUpDown1.Value;
time_set = shi * 3600 + fen * 60 + miao;
} private void timer1_Tick(object sender, EventArgs e)
{
Int32 time_now;
Int32 extra;
if (Flag_True == 1)
{
if (DateTime.Now.Minute == fen && DateTime.Now.Hour == shi && DateTime.Now.Second == miao)
{
button1.Text = "取消";
label6.Text = "剩余关机时间";
label7.Text = "秒";
label5.Text = "0";
System.Diagnostics.Process.Start("shutdown","-s -t 0");//关机程序
}//shutdown
else
{
time_now = DateTime.Now.Second + DateTime.Now.Minute * 60 + DateTime.Now.Hour * 3600;
extra = time_set - time_now;
if (extra > 0)
{
button1.Text = "取消";
label6.Text = "剩余关机时间";
label7.Text = "秒";
//extra/3600
label5.Text = extra.ToString();
}
else
{
Flag_True = 0;
} }
}
} private void label5_Click(object sender, EventArgs e)
{ } private void label4_Click(object sender, EventArgs e)
{ } private void label3_Click(object sender, EventArgs e)
{ } private void label6_Click(object sender, EventArgs e)
{ } private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
}
//最小化代码
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon1.Visible = true;
}
}
}
}
界面如下:

C#编写自动关机程序复习的知识的更多相关文章
- 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...
- 如何让VS2012编写的程序在XP下运行
Win32主程序需要以下设置 第一步:在工程属性General设置 第二步:在C/C++ Code Generation 设置 第三步:SubSystem 和 Minimum Required Ve ...
- C#入门到精通系列课程——第2章编写C#程序
◆本章内容 (1)熟悉Visual Studio 2017开发环境 (2)编写第一个C#程序 (3)C#程序结构预览 (4)程序编写规范 (5)难点解答 ◆本章简述 要学习C#编程,必然要熟悉C#程序 ...
- Java初学者作业——编写JAVA程序,根据用户输入课程名称,输出对应课程的简介,各门课程的简介见表
返回本章节 返回作业目录 需求说明: 编写JAVA程序,根据用户输入课程名称,输出对应课程的简介,各门课程的简介见表 课程名称 课程简介 JAVA课程 JAVA语言是目前最流行的编写语言,在本课程中将 ...
- CSharpGL(11)用C#直接编写GLSL程序
CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...
- 在Linux上编写C#程序
自从C#开源之后,在Linux编写C#程序就成了可能.Mono-project就是开源版本的C#维护项目.在Linux平台上使用的C#开发工具为monodevelop.安装方式如下: 首先需要安装一些 ...
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
- 如何让VS2013编写的程序
总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...
- 编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值
编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值 1 #import <Foundation/Foundation.h> 2 3 int main( ...
随机推荐
- FZU2138-久违的月赛之一
Problem Description 好久没举月赛了,这次lqw给大家出了5道题,因为hsy学长宣传的很到位,吸引了n个DDMM们来做,另一位kk学长说,全做对的要给金奖,做对4题要给银奖,做对3题 ...
- MariaDB设置主从复制[转载]
3. MariaDB设置主从复制 标签: mariadbMySQL主从复制 翻译人员: 铁锚 翻译日期: 2013年12月25日 原文链接: Setting Up Replication 主从复制 ...
- 利用Ajax把前端的数据封装成JSON格式发送到服务器端并写成XML格式在服务器的硬盘上
1.首先要在前端把要发送的东西(这里是一个实例化的car对象)都准备好,利用Ajax发送到服务器端,代码如下: <html xmlns="http://www.w3.org/1999/ ...
- TREEVIEW拖拽对应修改目录
附件:http://files.cnblogs.com/xe2011/TreeView_Drag_Directory%E6%93%8D%E4%BD%9C.rar TREEVIEW拖拽对应修改目 ...
- ctkPlugin插件系统实现项目插件式开发
插件式开发体会: 自开始写[大话QT]系列就开始接触渲染客户端的开发,说是开发不如更多的说是维护以及重构,在接手这块的东西之前自己还有点犹豫,因为之前我一直认为客户端嘛,没什么技术含量,总是想做比较有 ...
- PHP安全设置
1.register_globals(全局变量注册开关) 2.magic_quotes_gpc(魔术引号开关) 3.magic_quotes_runtime(魔术引号开关) 4.magic_quote ...
- C++中各种数据量类型转换
要在Unicode字符集环境下把CString转化为char* 方法: CString str = _T("D://校内项目//QQ.bmp");//////leo这个NB 可以 ...
- mac 下 php 安装 中的坑
brew Error: Formulae found in multiple taps http://www.trylife.cn/brew-error-formulae-found-in-multi ...
- jwPlayer实现支持IE8及以下版本避免出错的方法
jwplayer在支持Html5的情况下会自动使用html5的video和audio标签进行播放视频和音频.但是在IE中版本低于IE9时 <script src="jwplayer.h ...
- Redis Windows版安装及简单使用
1.Redis简介及优势 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. 特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次 ...