c# 一个托盘程序的详细设计过程(用户登录)

来源:互联网 发布:c与matlab混合编程 编辑:程序博客网 时间:2024/06/06 04:33
  • 整个程序的设计思路如下:
  1. 共有四个窗体(对我我们的主题托盘来说无需关注窗体之中的具体内容,只需搞清楚是怎么显示的便可),四个窗体分别是主窗体(FrnMian),登录窗体(FrmLogin),发送Email窗体(FrmPostTask),接受窗体(FrmViewTask)
  2. 其中,登录窗体(FrmLogin),发送Email窗体(FrmPostTask),接受窗体(FrmViewTask)分别对应托盘右键菜单的三个菜单选项,主窗体用来存放NotifyIcon控件,和ContextMenuStrip控件
  3. 整个过程是通过右击托盘菜单进入登录界面,验证成功后顺利进入相应的窗体:快捷菜单有三个菜单项,名称分别为:发Email,接收,和退出,单击发Email菜单时会首先进入登录界面,经过验证成功后会进入发送Email的窗体,单击接收菜单时会进入另一个窗体,单击退出菜单时会提示是否退出整个程序
  • 整个程序设计过程如下

一:主窗体(FrnMian)

1:首先,设置窗体Form1属性。窗体名称设置为FrnMianShowInTaskBar属性为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窗体,不必再次经过登陆认证,代码如下:

     

2:双击FrnMian进入窗体Load函数的编辑,为AdminLogin属性附初值,同时为TrayIcon附初值,代码如下:

   

3:为发送Email 菜单项单击事件添加函数体(可以双击发送Email 菜单项就可直接如下该函数编辑区),代码如下:

   

4:同样双击接受菜单,今天接受单击事件编辑区,添加如下代码

    

5:双击退出菜单,为其添加单击事件,代码如下:

  

     以上各步骤完成之后运行一下程序,点击各个菜单项,会进入相应的窗体

(二):登陆窗体(FrmLogin)

1:首先为该窗体添加两个静态成员变量Number,_Image。Number作用是记录点击登陆的次数,如果大于等于1次,就显示密码提示;_Image的作用是记录验证码上面每次显示的数字序列,便于作证

    码判断,代码如下:

   

2:在窗体构造函数中,为成员初始化,代码如下

   

3:为项目新建立一个类,用以生成验证码,类名为:BllCheckCode,验证码这部分如果不懂的话,可直接将代码运用到你的代码中,以后在慢慢研究,类的成员如下:

    

    

4:编写一个对验证码进行处理的函数(变形和错位),这个如果不懂的话,可以复制到你的代码中直接用

   

5:编辑PictureBox1事件,实现单击验证码时即可获取下一个随机的验证码的功能,直接调用Image函数

   

6:为登陆按钮添加单击事件,这里有很多情况要考虑,应该很好懂的:

       

 

7为TextBox3添加Keydown事件,判断是不是按下Enter键,如果是的话,就调用登陆按钮的单击事件,随同判断的还有是不是要显示密码提示

   

8:为TextBox1添加Keydown事件,使当按下Enter键之后,会让输入焦点到TextBox2上

    

9同样为TextBox2添加Keydown事件,使当按下Enter键之后,会让输入焦点到TextBox3上

   

10:在窗体Load函数中,添加对Image()函数的调用,使窗体一加载便会出现第一张验证码图片

   

至此,登陆窗体的代码以编辑完毕,运行程序可以显示相应的逻辑处理

(三):接收窗体

1:这个窗体没有实现什么功能,仅仅是通过点击接收菜单时,显示它

 

程序到这里就全部写完了,运行这个程序就可看到托盘的效果,祝你成功