日期:2014-05-20  浏览次数:20784 次

如何将Winform窗体最小化的时候将其显示到系统拖盘
RT

------解决方案--------------------
用NotifyIcon
------解决方案--------------------
抄来的:

先将窗体的Text属性设置为 "动画系统图标示例 ",MaximiseBox、MinimiseBox、ShowInTaskbar属性均设置为False。
  
  再往窗体上添加NotifyIcon控件、ContextMenu控件各一个。
  
  将NotifyIcon控件的Icon属性设置为一个图标文件,Name属性设置为“m_trayIcon”;ContextMenu属性设置为 "contextMenu1 ";接下来开始编辑ContextMenu控件

现在我们开始编写代码部分:
private bool m_bFlag;
private bool m_bShowWnd;
修改Form1()函数为:
  
  public Form1()
  {
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent();
  //
  // TODO: Add any constructor code after InitializeComponent call
  //
  m_bFlag=true;
  m_bShowWnd=true;
}

private void menuItem1_Click(object sender, System.EventArgs e)
  {
  Application.Exit();//退出应用程序
  }

private void m_trayIcon_Click(object sender, System.EventArgs e)
  {
  if(m_bShowWnd == true)//隐藏主界面
  {
  this.Visible = false;
  m_bShowWnd = false;
  }
  else//显示主界面
  {
  this.Visible = true;
  m_bShowWnd = true;
  }
  }
------解决方案--------------------
从我收藏的资料里找到的


用Visual C#做托盘程序


   所谓托盘程序顾名思义就是象托起的盘子一样的程序。而所谓的托起的盘子就是程序运行中显示出的图标,而托起的位置就是视窗系统的的工具栏了。托盘程序具有直观、占用屏幕空间较小并且可以为它定义多个功能菜单,这就给操作者带来了方便,所以越来越多的程序设计者都把程序设计成托盘这种方式。我们已经看过了用其他语言设计托盘程序的例子,其中的大部分,整个设计过程还是相对烦琐的。而对于微软公司极力推荐的下一代程序开发语言--Visual C#来说,却可以十分方便设计出一个托盘程序。本文就是介绍Visual C#设计托盘程序的具体过程。

   首先来介绍一下本文中设计托盘程序所需要的环境:

   (1).微软公司视窗2000服务器版

   (2)..Net FrameWork SDK Beta 2

   一. 托盘程序的主要步骤及解决方法:

   为什么说用Visual C#可以十分方便的做一个托盘程序,主要的原因是在.Net框架的软件开发包( .Net FrameWork SDK )中的WinForm组件中定义了一个专门用来开发托盘程序的组件--NotifyIcon组件。下面就来介绍一下这个组件的具体用法和程序设计中的主要的技巧。

   (1).如何在程序运行后隐藏窗体:

   我们知道托盘程序运行后是无法看见主窗体的,他只会显示在工具栏上。在用Visual C#设计此类程序的时候,可以用二种方法使得程序运行后不显示主窗体。其中一种方法是重载主窗体中的OnActivated( )事件,OnActivated( )事件是在窗体激活的时候才触发的。通过重载此事件可以达到隐藏主窗体的目的。具体程序代码如下:

protected override void OnActivated ( EventArgs e )
{
this.Hide ( ) ;
}

   另外一种方法是在初始化主窗体的时候完成的,通过设定主窗体的属性来达到不显示的目的。具体的程序代码如下:

this.MaximizeBox = false ;
this.MinimizeBox = false ;
this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;

   在本文介绍的程序中,使用了第二种方法。
   (2).如何为托盘程序设定显示图标:

   在NotifyIcon组件中有一个属性icon就是来设定托盘图标的,由于Visual C#是一个完全的OOP (面向对象)语言,在Visual C#中任何东西都可以作为对象来处理。当然对应一个icon来说,也可以用对象的方法来处理他。我们通过下列语句来得到一个icon对象:

private Icon mNetTrayIcon = new Icon ( "Tray.ico " ) ;

   请注意:在编译好的程序中,必须要在同一个目录中有一个Tray.ico图标文件,否则程序运行时候会出错的。

   通过下列语句把此icon对象付给NotifyIcon组件中的icon属性,此时如果程序正确编译,则此icon就会显示在工具栏中了。

TrayIcon.Icon = mNetTrayIcon ;

   (3).设定当鼠标停留在托盘程序上显示的文本内容:

   NotifyIcon组件中有一个属性Text。设定这个属性的内容,就是鼠标停留在托盘图标上显示的内容了。具体语句如下:

TrayIcon.Text = "用Visual C#做托盘程序 " + "\n " + "作者:马金虎于2001.12.08 " ;

   (4).如何在托盘程序加入菜单:

   在NotifyIcon组件中有一个对象叫ContextMenu,在托盘程序中显示出的菜单就是通过设定此对象来实现的。以下的程序代码是为托盘程序加入菜单项:

notifyiconMnu = new ContextMenu ( mnuItms ) ;
TrayIcon.ContextMenu = notifyiconMnu ;
//为托盘程序设定菜单

   (5).如何设定ContextMenu对象的内容:

   ContextMenu对象是托盘程序的菜单的结构,所以如何设定此对象,在本程序中是比较关键的。在程序中,是通过定义一个菜单项数组,并对这个数组设定不同的值(这当中包括菜单的一些属性和事件),然后把这个数组同时赋值给ContextMenu对象,来实现对ContextMenu对象的设置过程的。以下是程序中具体代码:

//定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象
MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;