c# 一个托盘程序的详细设计过程(用户登录)
2010-12-29 22:42
405 查看
整个程序的设计思路如下:
共有四个窗体(对我我们的主题托盘来说无需关注窗体之中的具体内容,只需搞清楚是怎么显示的便可),四个窗体分别是主窗体(FrnMian),登录窗体(FrmLogin),发送Email窗体(FrmPostTask),接受窗体(FrmViewTask)
其中,登录窗体(FrmLogin),发送Email窗体(FrmPostTask),接受窗体(FrmViewTask)分别对应托盘右键菜单的三个菜单选项,主窗体用来存放NotifyIcon控件,和ContextMenuStrip控件
整个过程是通过右击托盘菜单进入登录界面,验证成功后顺利进入相应的窗体:快捷菜单有三个菜单项,名称分别为:发Email,接收,和退出,单击发Email菜单时会首先进入登录界面,经过验证成功后会进入发送Email的窗体,单击接收菜单时会进入另一个窗体,单击退出菜单时会提示是否退出整个程序
整个程序设计过程如下
一:主窗体(FrnMian)
1:首先,设置窗体Form1属性。窗体名称设置为FrnMian,ShowInTaskBar属性为false(为了不让其在任务栏显示) ,ShowIcon设置为false(不显示窗体图标) ,Text属性赋值为托盘菜单。
2:在窗体中添加一个NotifyIcon控件,名称为TrayIcon,其Icon属性是为托盘添加一个图标,就像QQ图标一样,在这里我们可以选择一个我们喜欢的图标
3:再为窗体添加一个ContextMenuStrip控件(这是右键快捷菜单),名称还是contextMenuStrip1,然后为快捷菜单添加三个菜单项,分别为:发Email,接收,和退出,并且为发Email菜单项添加图标
做好后如下图所示:
4:然后设置TrayIcon的contextMenuStrip属性为contextMenuStrip1,使contextMenuStrip1绑定到TrayIcon
至此第一步已完成,运行程序会在状态栏出现我们的托盘图标,右击托盘,会出现快捷菜单,有几个菜单项,可以点击,但是没有任何反应,因为我们没有写单击事件
二:登录窗体(FrmLogin)
1:新建一个windows窗体,并命名为FrmLogin,(我们可以组织我们自己的登陆界面,在这里我用了一个Panel控件,并用Photoshop画了一张图片作为Panel的底面图片,当然你也可以不用),设置
ShowInTaskBar属性为false,StartPosition属性为CenterParent是窗体一开始出现在最中央;Text属性为登陆;FromBorderStyle属性为None,是窗体的外观;设置其背景颜色为Peru
2:在窗体上添加四个标签,分别为:用户名,密码,验证码,密码提示;一个PictureBox控件(用来作为验证码的图片显示);两个按钮,分别为确定和取消;三个TextBox控件作为输入用户名,密码和验证码
以上做完后登陆界面效果如下,当然你自己的可以简单点就行
这一步就完成了登陆窗体的布局
三:再一次新建FrmPostTask和FrmViewTask两个窗体
1:FrmPostTask窗体的Name为FrmPostTask,该窗体是点击发送Email
菜单并经过登陆验证后进入的窗体,Text属性为发送Email,设置MaxmizeBox属性为False使窗体不能被最大化,设置MaximumSize和MaximumSize大小一样(比如都为445, 319)以使窗体的大小不变;StartPosition属性为
CenterParent;
2:对于FrmViewTask窗体的Name为FrmViewTask,该窗体是点击接收菜单后进入的窗体,其Text属性为接收,其他的属性设置和FrmPostTask窗体一样
至此所有窗体的制作已全部制作完毕,接下来是代码编辑
四:为个窗体添加代码
(一):主窗体(FrnMian)
1:进入主窗体FrnMian,双击发送Email菜单项,进入代码编辑区,首先为FrnMian添加一个成员_AdminLogin,同时为_AdminLogin添加属性AdminLogin,用来记录登陆状态,表示当用户成功登陆之后,
当再次点击发送Email 菜单项时,直接进入发送E
mail窗体,不必再次经过登陆认证,代码如下:
3:为发送Email 菜单项单击事件添加函数体(可以双击发送Email 菜单项就可直接如下该函数编辑区),代码如下:
5:双击退出菜单,为其添加单击事件,代码如下:
2:在窗体构造函数中,为成员初始化,代码如下
4:编写一个对验证码进行处理的函数(变形和错位),这个如果不懂的话,可以复制到你的代码中直接用
6:为登陆按钮添加单击事件,这里有很多情况要考虑,应该很好懂的:
8:为TextBox1添加Keydown事件,使当按下Enter键之后,会让输入焦点到TextBox2上
10:在窗体Load函数中,添加对Image()函数的调用,使窗体一加载便会出现第一张验证码图片
private void FrmLogin_Load(object sender, EventArgs e)
{
Image();
}
至此,登陆窗体的代码以编辑完毕,运行程序可以显示相应的逻辑处理
(三):接收窗体
1:这个窗体没有实现什么功能,仅仅是通过点击接收菜单时,显示它
程序到这里就全部写完了,运行这个程序就可看到托盘的效果,祝你成功
共有四个窗体(对我我们的主题托盘来说无需关注窗体之中的具体内容,只需搞清楚是怎么显示的便可),四个窗体分别是主窗体(FrnMian),登录窗体(FrmLogin),发送Email窗体(FrmPostTask),接受窗体(FrmViewTask)
其中,登录窗体(FrmLogin),发送Email窗体(FrmPostTask),接受窗体(FrmViewTask)分别对应托盘右键菜单的三个菜单选项,主窗体用来存放NotifyIcon控件,和ContextMenuStrip控件
整个过程是通过右击托盘菜单进入登录界面,验证成功后顺利进入相应的窗体:快捷菜单有三个菜单项,名称分别为:发Email,接收,和退出,单击发Email菜单时会首先进入登录界面,经过验证成功后会进入发送Email的窗体,单击接收菜单时会进入另一个窗体,单击退出菜单时会提示是否退出整个程序
整个程序设计过程如下
一:主窗体(FrnMian)
1:首先,设置窗体Form1属性。窗体名称设置为FrnMian,ShowInTaskBar属性为false(为了不让其在任务栏显示) ,ShowIcon设置为false(不显示窗体图标) ,Text属性赋值为托盘菜单。
2:在窗体中添加一个NotifyIcon控件,名称为TrayIcon,其Icon属性是为托盘添加一个图标,就像QQ图标一样,在这里我们可以选择一个我们喜欢的图标
3:再为窗体添加一个ContextMenuStrip控件(这是右键快捷菜单),名称还是contextMenuStrip1,然后为快捷菜单添加三个菜单项,分别为:发Email,接收,和退出,并且为发Email菜单项添加图标
做好后如下图所示:
4:然后设置TrayIcon的contextMenuStrip属性为contextMenuStrip1,使contextMenuStrip1绑定到TrayIcon
至此第一步已完成,运行程序会在状态栏出现我们的托盘图标,右击托盘,会出现快捷菜单,有几个菜单项,可以点击,但是没有任何反应,因为我们没有写单击事件
二:登录窗体(FrmLogin)
1:新建一个windows窗体,并命名为FrmLogin,(我们可以组织我们自己的登陆界面,在这里我用了一个Panel控件,并用Photoshop画了一张图片作为Panel的底面图片,当然你也可以不用),设置
ShowInTaskBar属性为false,StartPosition属性为CenterParent是窗体一开始出现在最中央;Text属性为登陆;FromBorderStyle属性为None,是窗体的外观;设置其背景颜色为Peru
2:在窗体上添加四个标签,分别为:用户名,密码,验证码,密码提示;一个PictureBox控件(用来作为验证码的图片显示);两个按钮,分别为确定和取消;三个TextBox控件作为输入用户名,密码和验证码
以上做完后登陆界面效果如下,当然你自己的可以简单点就行
这一步就完成了登陆窗体的布局
三:再一次新建FrmPostTask和FrmViewTask两个窗体
1:FrmPostTask窗体的Name为FrmPostTask,该窗体是点击发送Email
菜单并经过登陆验证后进入的窗体,Text属性为发送Email,设置MaxmizeBox属性为False使窗体不能被最大化,设置MaximumSize和MaximumSize大小一样(比如都为445, 319)以使窗体的大小不变;StartPosition属性为
CenterParent;
2:对于FrmViewTask窗体的Name为FrmViewTask,该窗体是点击接收菜单后进入的窗体,其Text属性为接收,其他的属性设置和FrmPostTask窗体一样
至此所有窗体的制作已全部制作完毕,接下来是代码编辑
四:为个窗体添加代码
(一):主窗体(FrnMian)
1:进入主窗体FrnMian,双击发送Email菜单项,进入代码编辑区,首先为FrnMian添加一个成员_AdminLogin,同时为_AdminLogin添加属性AdminLogin,用来记录登陆状态,表示当用户成功登陆之后,
当再次点击发送Email 菜单项时,直接进入发送E
mail窗体,不必再次经过登陆认证,代码如下:
//初始化 TrayIcon.Visible = true; AdminLogin = false;
3:为发送Email 菜单项单击事件添加函数体(可以双击发送Email 菜单项就可直接如下该函数编辑区),代码如下:
接收ToolStripMenuItem.Enabled = false; FrmViewTask frmViewTask = new FrmViewTask(); try { frmViewTask.ShowDialog(); } finally { frmViewTask.Dispose(); 接收ToolStripMenuItem.Enabled = true; }
5:双击退出菜单,为其添加单击事件,代码如下:
static int Number; //记录登陆次数 static string _Image=" "; //记录验证码数字序列
2:在窗体构造函数中,为成员初始化,代码如下
class BllCheckCode { public static Color GetControllableColor(int colorBase) { Color color = Color.Black; Random random = new Random(); //确保 R,G,B 均大于 colorBase,这样才能保证背景色较浅 color = Color.FromArgb(random.Next(56) + colorBase, random.Next(56) + colorBase, random.Next(56) + colorBase); return color; } public static string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for (int i = 0; i < 4; i++) { number = random.Next(); code = (char)('0' + (char)(number % 10)); checkCode += code.ToString(); } return checkCode; } }
4:编写一个对验证码进行处理的函数(变形和错位),这个如果不懂的话,可以复制到你的代码中直接用
private void pictureBox1_Click(object sender, EventArgs e) { Image(); }
6:为登陆按钮添加单击事件,这里有很多情况要考虑,应该很好懂的:
if (e.KeyValue == 13) button1_Click(sender, e); if (Number > 0) { label3.Visible = true; label3.Text = "密码提示:谌豹生日?"; }
8:为TextBox1添加Keydown事件,使当按下Enter键之后,会让输入焦点到TextBox2上
if (e.KeyValue == 13) { textBox3.Focus(); }
10:在窗体Load函数中,添加对Image()函数的调用,使窗体一加载便会出现第一张验证码图片
private void FrmLogin_Load(object sender, EventArgs e)
{
Image();
}
至此,登陆窗体的代码以编辑完毕,运行程序可以显示相应的逻辑处理
(三):接收窗体
1:这个窗体没有实现什么功能,仅仅是通过点击接收菜单时,显示它
程序到这里就全部写完了,运行这个程序就可看到托盘的效果,祝你成功
相关文章推荐
- C# B/S程序中出现“异常详细信息: System.Data.SqlClient.SqlException: 用户 'XXX/ASPNET' 登录失败。”的处理方法
- xp中 “控制面板”->“用户帐户”->“更改用户登录注销方式” 出现 一个最近安装的程序已停用欢迎界面和快速用户切换
- C#设计的一个向导程序(Wizard)框架 -- VS2008(二)
- 在SQL触发器或存储过程中获取在程序登录的用户
- 用C#设计一个驱动备份的程序代码
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- vs2010 c# MySql 用户登录注册设计代码优化1
- C#设计的一个向导程序(Wizard)框架 --VS2008版(三)
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
- Ajax一个简单入门程序(用户登录验证)
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- python编写一个用户登录程序
- 设计一个可扩展的用户登录系统 (1)
- 使用structs2.0开发一个简单的用户登录程序
- 用C#设计一个驱动备份的程序代码
- InstallShield制作软件安装包:在安装过程中启动一个c#写的程序
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- 一个汇编小程序:用户登录验证程序
- 利用Java Swing技术设计一个鼠标点击速度比赛游戏程序。程序显示一个按钮和一个文本框,用户点击按钮,文本框显示鼠标点击次数。两个人同时运行本程序,即可进行比赛